許多初學者將Arrays.asList()方法的概念與數據結構 ArrayList 混為一談。儘管它們看起來和聽起來很相似,但在實施方面兩者完全不同。在這篇文章中,我們將介紹Arrays.asList()方法的基本用法,並將消除一些與之相關的普遍混淆。
為什麼使用 Arrays.asList()?
如果您有一個需要轉換為列表的數組,則java.util.Arrays提供了一個包裝器Arrays.asList()來實現此目的。簡單來說,這個方法接受一個數組作為參數並返回一個列表。Java 平台 API 的主要部分是在引入集合框架之前開發的。所以偶爾,您可能需要在傳統數組和更現代的集合之間進行轉換。此函數用作集合和基於數組的 API 之間的鏈接。
例子
看看下面的例子:
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
public class ArraysAsListDemo {
public static void main(String[] args) {
String[] teamMembers = {"Amanda", "Loren", "Keith"};
// using aslist() method
List teamList = Arrays.asList(teamMembers);
System.out.println("List : " + teamList);
HashSet teamHashSet = new HashSet<>(Arrays.asList(teamMembers));
System.out.println("HashSet : " + teamHashSet);
}
}
輸出:
List : [Amanda, Loren, Keith] HashSet : [Keith, Loren, Amanda] // HashSet 不維護順序
Arrays.asList() 和 ArrayList 有何不同?
在數組上調用Arrays.asList()方法時,返回的對像不是ArrayList (List接口的可調整大小的數組實現)。它是一個具有訪問底層數組的get()和set()方法的視圖對象。所有會更改數組大小的方法,例如關聯迭代器的add()或remove()都會拋出UnsupportedOperationException。java 程序成功編譯但給出運行時異常的原因是,顯然,返回一個“列表”作為結果數組.asList()。允許所有添加/刪除操作的地方。但是由於底層數據結構是一個不可調整大小的“數組”,因此在運行時會拋出異常。這是一個片段,展示了它的樣子:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
public static void main(String[] args) {
Integer[] diceRoll = new Integer[6];
//using aslist() method
List diceRollList = Arrays.asList(diceRoll);
System.out.println(diceRollList);
// using getters and setters to randomly access the list
diceRollList.set(5, 6);
diceRollList.set(0, 1);
System.out.println(diceRollList.get(5));
System.out.println(diceRollList.get(1));
System.out.println(diceRollList);
diceRollList.add(7); // Add a new Integer to the list
}
}
輸出:
[null, null, null, null, null, null] 6 null [1, null, null, null, null, 6] java.util.AbstractList.add(AbstractList.add(AbstractList. java:148) 在 java.util.AbstractList.add(AbstractList.java:108) 在 ArraysAsListDemo.main(ArraysAsListDemo.java:20)
使用 asList() 方法的示例
從 Java SE 5.0 開始,asList()方法被聲明為具有可變數量的參數。除了傳遞數組,您還可以傳遞單個元素。例如:
import java.util.Arrays;
import java.util.List;
public class ArraysAsListDemo {
public static void main(String[] args) {
List seasons = Arrays.asList("winter", "summer", "spring", "fall");
List odds = Arrays.asList(1, 3, 5, 7, 9);
System.out.println(seasons);
System.out.println(odds);
}
}
輸出:
[冬、夏、春、秋] [1, 3, 5, 7, 9]
GO TO FULL VERSION