Referring to Difference between Arrays.asList(array) vs new ArrayList<Integer>(Arrays.asList(ia)) in java
I was curious as in what's the exact purpose of Arrays.asList()
method.
When we create a new List
from it, say for example -
Integer[] I = new Integer[] { new Integer(1), new Integer(2), new Integer(3) };
List<Integer> list1 = Arrays.asList(I);
List<Integer> list2 = ((List<Integer>) Arrays.asList(I));
We cannot perform most of the the regular operations on it like .add()
, .remove()
. Thus, I was not able add an iterator to it to avoid concurrent modification.
Oracle docs state
public static List asList(T... a)
Returns a fixed-size list backed by the specified array. (Changes to the returned list "write through" to the array.) This method acts as bridge between array-based and collection-based APIs, in combination with Collection.toArray(). The returned list is serializable and implements RandomAccess.
It works well with creating a new List
. List<Integer> list3 = new ArrayList<>(Arrays.asList(I));
So, why this and what are its advantages and disadvantages?
List
view of an array. The other is a copy of an array into an entirely separateList
. You're comparing apples and oranges. – Boris the SpiderArrays.asList("Alpha", "Beta")
. And it is explicitly backed by the array you give it - you can use it to actually modify an array if that's what you need. – khelwoodInteger[]
, then there's probably not a huge difference between Arrays.asList and ArrayList (unless you need the ArrayList's functionality, of course). But if you don't, thenList<Integer> list1 = Arrays.asList(1, 2, 3)
is pretty convenient. – yshavitprivate static final List<String> VALID_INPUTS = Arrays.asList("Cat","Dog","Mouse");
– Michael