集合:Arrays.asList() 和 new ArraysList()
Arrays.asList 和 new ArrayList 在 Java 中都与集合有关,但是它们之间有一些重要的区别。
概述
1) Arrays.asList():T... 是一个可变参数(varargs),接收任意参数后,会组合为一个数组。

Arrays.asList("字符串列表."); // 字符串列表
Arrays.asList(2024); // 整数列表
int[] array = {1,2,3,4,5};
Arrays.asList("多元素列表", array); // 可放多个元素
2) new ArrayList():在创建对象存储类型可为包装类、类、接口、数组。
ArrayList<Integer> integerList = new ArrayList<>(); // 存储整数对象 ArrayList<Double> doubleList = new ArrayList<>(); // 存储双精度浮点数对象 ArrayList<String> stringList = new ArrayList<>(); // 存储字符串对象 ArrayList<Person> personList = new ArrayList<>(); // 存储自定义类对象 ArrayList<List<Integer>> nestedList = new ArrayList<>(); // 存储整数列表对象的列表 ArrayList<Map<String, Integer>> mapList = new ArrayList<>(); // 存储映射对象的列表 ArrayList<int[]> intArrayList = new ArrayList<>(); // 存储整型数组对象 ArrayList<String[]> stringArrayList = new ArrayList<>(); // 存储字符串数组对象 ArrayList<String> list = new ArrayList<>(); // list.add("添加"); // 添加元素 list.remove(0); // 移除元素
异同
类型:
Arrays.asList 返回的是一个由指定数组支持的固定大小的列表。这意味着不能向该列表添加或删除元素,但是可以修改已有的元素。
new ArrayList 创建的是一个可变大小的列表,可以根据需要添加或删除元素。
底层数据结构:
Arrays.asList 返回的列表是基于原始数组的,没有进行额外的内存分配。这意味着,对 Arrays.asList 返回的列表进行操作,将直接影响到原始数组。
new ArrayList 创建的是一个基于动态数组的列表,它会根据需要自动调整大小,不会影响到原始数组。
可变性:
Arrays.asList 返回的列表是不可变的(固定大小的),不能直接增加或删除元素。
new ArrayList 创建的列表是可变的,可以通过添加、删除元素来改变列表的大小和内容。
总结:
如果需要一个不可变的、固定大小的列表,并且已有一个数组作为支持,那么 Arrays.asList 是一个不错的选择。如果需要一个可变的、动态大小的列表,或者希望不受原始数组的影响,那么应该使用 new ArrayList。

浙公网安备 33010602011771号