一天一个Arrays小知识——Arrays.asList()
Arrays.asList() 是 Java 中的一个静态方法,它属于 java.util.Arrays 类。这个方法的紧张作用是将一个数组转换成一个固定巨细的列表(List),但这个列表是由原数组支持的,也就是说,列表黑白同步的,而且其巨细是固定的,由于列表的巨细是由原数组的巨细决定的,不支持通过 add() 或 remove() 方法来改变列表的巨细。利用方法
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 创建一个数组
Integer[] numbers = {1, 2, 3, 4, 5};
// 使用 Arrays.asList() 将数组转换为列表
List<Integer> list = Arrays.asList(numbers);
// 遍历列表
for (Integer number : list) {
System.out.println(number);
}
// 注意:下面的代码会抛出 ConcurrentModificationException,因为返回的列表大小是固定的
// list.add(6); // 尝试添加元素会抛出异常
// 另一个常见的错误是尝试传递基本类型数组给 Arrays.asList()
// int[] basicNumbers = {1, 2, 3};
// List<Integer> basicList = Arrays.asList(basicNumbers); // 这不会按预期工作
// 因为 Arrays.asList() 会将 basicNumbers 数组本身作为列表的唯一元素
// 正确的做法是使用包装类型数组
Integer[] boxedNumbers = {1, 2, 3};
List<Integer> boxedList = Arrays.asList(boxedNumbers);
// 或者使用 Stream API 转换基本类型数组
int[] basicArray = {1, 2, 3};
List<Integer> streamList = Arrays.stream(basicArray).boxed().collect(Collectors.toList());
}
}注意事项
[*]不可变巨细:返回的列表巨细固定,不支持通过 add() 或 remove() 方法修改。
[*]范例安全:Arrays.asList() 泛型参数必须是对象范例数组(如 Integer[]),假如传入根本范例数组(如 int[]),则整个数组会被视为列表中的单个元素。
[*]性能:由于返回的列表是由原数组支持的,因此在性能上,访问列表元素(通过索引或迭代器)通常比访问原始数组要快,但修改列表(只管不支持)或将其转换为新的列表(如利用 new ArrayList<>(Arrays.asList(array)))会涉及到额外的内存分配和大概的复制操纵。
[*]同步性:返回的列表不是同步的,假如须要在多线程环境下利用,请自行同步访问。
利用机遇
[*] 将数组转达给须要聚集参数的方法:
当你有一个数组,但须要将其转达给一个渴望吸取 List 或其他聚集范例参数的方法时,Arrays.asList() 可以非常方便地将数组转换为一个列表。
[*] 简化聚集初始化:
当你须要快速初始化一个只包罗少量元素的聚集时,利用 Arrays.asList() 可以比逐个添加元素到聚集中更简便。
[*] 作为循环或迭代的数据源:
在须要利用数组元素举行迭代,但又想利用聚集的迭代器或加强型 for 循环(也称为 "for-each" 循环)时,Arrays.asList() 提供了便利。
[*] 与聚集框架的其他部门共同利用:
Arrays.asList() 返回的列表可以与聚集框架中的其他类(如 Collections 类的工具方法)一起利用,以实验如排序、搜索或过滤等操纵。
[*] 作为不可变列表的源:
由于 Arrays.asList() 返回的列表是固定巨细的,而且其修改操纵(除了 set(),假如列表支持的话)会抛出 UnsupportedOperationException,因此它可以作为不可变列表的源,用于须要不可变聚集的场景。
[*] 在泛型代码中利用:
在泛型编程中,当你须要明白指定聚集中元素的范例时,Arrays.asList() 提供了范例安全的方式来从数组创建列表。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
页:
[1]