參考Difference between Arrays.asList(array) vs new ArrayList<Integer>(Arrays.asList(ia)) in java 我很好奇,因爲Arrays.asList()
方法的確切用途是什麼。使用Arrays.asList創建列表的好處
當我們從它創建一個新的List
,比方說 -
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));
我們不能像.add()
,.remove()
執行大部分的常規操作。因此,我無法添加迭代器來避免concurrent modification。
甲骨文的文檔狀態
公共靜態列表asList(T ... a)首先
返回由指定數組支持的固定大小的列表。 (更改爲 返回的列表「通過」寫入數組。)此方法在基於數組和基於collection的API之間充當 橋接,組合爲 與Collection.toArray()。返回的列表是可串行化的,並且 實現RandomAccess。
它適用於創建新的List
。 List<Integer> list3 = new ArrayList<>(Arrays.asList(I));
那麼,爲什麼這個和它的優點和缺點是什麼?
一個是數組的列表**視圖**。另一個是將數組拷貝到一個完全獨立的'List'中。你正在比較[蘋果和橙子](https://en.wikipedia.org/wiki/Apples_and_oranges)。 –
這是獲取列表的最簡單方式。 'Arrays.asList(「Alpha」,「Beta」)'。它明確地支持你給它的數組 - 你可以用它來實際修改一個數組,如果這是你所需要的。 – khelwood
如果你已經有一個'Integer []',那麼Arrays.asList和ArrayList之間可能沒有太大的區別(當然,除非你需要ArrayList的功能)。但是如果你不這樣做,那麼列表 list1 = Arrays.asList(1,2,3)'是非常方便的。 –
yshavit