CodeGym /Java 博客 /随机的 /Java 中的 Arrays.asList() 方法
John Squirrels
第 41 级
San Francisco

Java 中的 Arrays.asList() 方法

已在 随机的 群组中发布
许多初学者将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 并获得良好的学习体验!
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION