Java Q & A
1. What is the difference between
i. List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia)); ii. List<Integer> list2 = Arrays.asList(ia);
i. new ArrayList<Integer>(Arrays.asList(ia))
- The new
ArrayList
is an independent copy of the original one. - Although you create the wrapper using
Arrays.asList
, it is used only during the construction of the newArrayList
and is garbage-collected afterwards.
ii. Arrays.asList(ia)
- Array
ia
and creates a wrapper that implementsList<Integer>
, which makes the original array as a list. - Nothing is copied at all, only a single wrapper object is created.
- Operations on the list wrapper are propagated to the original array -- if you shuffle the list wrapper, the original array is shuffled; if you overwrite an element, it gets overwritten in the original array, etc.
- Some List operations aren't allowed on the wrapper, like adding or removing elements from the list -- no resize.
- list wrapper doesn't extend
ArrayList
--ArrayList
s have their own, internal array, which they are able to resize.
2. Contructor of PriorityQueue
PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
initialCapacity shouldn't < 1, otherwise, there will be IllegalArgumentException.
3.