在Java 中將Array 轉換為ArrayList
在Java 中,將陣列轉換為ArrayList 的過程有時會令人困惑,尤其是在考慮Java SE 1.4.2 中引入的變更。本文深入探討了這種轉換的複雜性,提供了對可用選項的全面理解。
最初,Arrays.asList() 方法允許建立包含陣列元素的 ArrayList。然而,這種行為在 Java SE 1.5.0 中被修改,導致 ArrayList 包含陣列本身。
例如,考慮以下代碼片段:
Java SE 1.4 .2
int[] numbers = new int[] { 1, 2, 3 }; java.util.List<Integer> list = Arrays.asList(numbers);
Java SE 1.5.0
int[] numbers = new Integer[] { 1, 2, 3 }; java.util.List<Integer> list = Arrays.asList(numbers);
顯著的差異在於創建的ArrayList 的類型。在 1.4.2 中,list 是包含整數值 1、2 和 3 的 ArrayList。在 1.5.0 中,list 是包含陣列數字的 ArrayList。
這種區別可能會導致意外結果,例如:
Assert.assertTrue(list.indexOf(4) == -1);
雖然此斷言在1.4.2 中成立,但在1.5.0 中失敗,因為list現在包含數組數字,而不是Integer 值。
為了避免此類問題並獲取Integer 值的ArrayList,一種解決方案是使用包裝原始int 類型的Integer 類:
Integer[] numbers = new Integer[] { 1, 2, 3 }; java.util.List<Integer> list = Arrays.asList(numbers);
透過利用Integer 類,此轉換建立一個包含所需Integer 值的ArrayList。
以上是如何正確地將Java數組轉換為ArrayList?的詳細內容。更多資訊請關注PHP中文網其他相關文章!