数组和集合有什么区别?

最核心的区别:

数组长度固定;集合长度可以动态变化。

例如数组:

int[] arr = new int[3];

创建的时候长度就是 3,后面不能直接扩成 10。

集合:

List<Integer> list = new ArrayList<>();
 
list.add(1);
list.add(2);
list.add(3);
list.add(4);

可以动态增加、删除元素。

除此之外:

对比数组 Array集合 Collection
长度固定动态变化
存储基本类型✅ 可以❌ 只能存对象,基本类型需装箱
存储对象✅✅
泛型❌✅
功能比较基础增删改查、排序等 API 丰富
性能/开销通常更直接、开销小功能丰富,但有额外封装开销

例如:

int[] arr = {1, 2, 3};

可以直接保存 int。

但:

List<Integer> list = new ArrayList<>();
list.add(1);

实际上涉及:

int
 ↓ 自动装箱
Integer
 ↓
List<Integer>

面试回答

数组和集合都可以用于存储一组数据。主要区别是数组创建后长度固定,而集合大小可以动态变化;数组既可以存基本数据类型也可以存对象,而集合只能存对象,基本类型需要通过包装类进行自动装箱。另外集合支持泛型,并且提供了更加丰富的增删改查等 API,因此实际业务开发中使用更加灵活。