CodeGym/Java Blog/Toto sisi/Java 中的 Arrays.asList() 方法
John Squirrels
等級 41
San Francisco

Java 中的 Arrays.asList() 方法

在 Toto sisi 群組發布
個成員
許多初學者將Arrays.asList()方法的概念與數據結構 ArrayList 混為一談。儘管它們看起來和聽起來很相似,但在實施方面兩者完全不同。在這篇文章中,我們將介紹Arrays.asList()方法的基本用法,並將消除一些與之相關的普遍混淆。

為什麼使用 Arrays.asList()?

如果您有一個需要轉換為列表的數組,則java.util.Arrays提供了一個包裝器Arrays.asList()來實現此目的。簡單來說,這個方法接受一個數組作為參數並返回一個列表。Java 平台 API 的主要部分是在引入集合框架之前開發的。所以偶爾,您可能需要在傳統數組和更現代的集合之間進行轉換。此函數用作集合和基於數組的 API 之間的鏈接。Java 中的 Arrays.asList() 方法 - 1

例子

看看下面的例子:
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]

結論

為了使用Arrays.asList()你需要記住它只是你自己的實用程序的包裝方法。不要將它與 ArrayList 混淆,記住它返回的是一個“列表”。最初您可能會在執行添加/刪除功能時遇到錯誤,但是通過一致的實踐和理解,這一切都會消失。因此,打開您的 IDE 並獲得良好的學習體驗!
留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言