ArrayList 和 Array(数组)的区别?以及相互转换
ArrayList
内部基于动态数组实现,比 Array
(静态数组) 使用起来更加灵活:
-
ArrayList
会根据实际存储的元素动态地扩容或缩容,而Array
被创建之后就不能改变它的长度了。 -
ArrayList
允许你使用泛型来确保类型安全,Array
则不可以。 -
ArrayList
中只能存储对象。对于基本类型数据,需要使用其对应的包装类(如 Integer、Double 等)。Array
可以直接存储基本类型数据,也可以存储对象。 -
ArrayList
支持插入、删除、遍历等常见操作,并且提供了丰富的 API 操作方法,比如add()
、remove()
等。Array
只是一个固定长度的数组,只能按照下标访问其中的元素,不具备动态添加、删除元素的能力。 -
ArrayList
创建时不需要指定大小,而Array
创建时必须指定大小。
常用相互转换:
ArrayList<Integer> list = new ArrayList<>(); list.removeIf(b->b>1); //List转Array Integer[] array = (Integer[]) list.toArray(); Integer[] array2 = list.toArray(new Integer[0]); //Array转List List<Integer> list2 = Arrays.asList(array); List<Integer> list3 = Arrays.stream(array).toList(); //其他Array转ArrayList转换方法 List<Integer> list4 = new ArrayList<>(Arrays.asList(array));