1. 先分三个东西
- 普通数组 :
int[] 、String[] - ArrayList(数组列表)
- Collection(集合)
2. 最简单比喻
-
普通数组 :
就像固定大小的盒子 ,一开始定好能装5个,装满就不能再加,想多装只能换新盒子。
-
ArrayList :
就是会自动变大的盒子,你随便往里放东西,满了它自己悄悄变大,不用你管。
-
Collection :
它不是盒子 ,只是一张图纸 。
规定:凡是叫"集合"的盒子,都必须能 添加、删除、遍历 东西。
ArrayList 就是按照这张图纸做出来的成品盒子。
3. 三者关系一句话
Collection 是图纸(接口)
List 是详细一点的图纸
ArrayList 是真正能用的成品盒子
普通数组 跟这套图纸没关系,是单独的老款盒子
4. 只记这两个核心区别就行
① 普通数组 vs ArrayList
- 普通数组:长度固定,不能自动变大
- ArrayList:长度不固定,自动扩容,随便加元素
② ArrayList vs Collection
- Collection:只是规则、图纸,不能 new 出来直接用
- ArrayList:实实在在能 new、能装数据来用的
5. 看代码一眼懂
java
// 普通数组:固定长度3,最多放3个
String[] arr = new String[3];
// ArrayList:随便加,不限个数
ArrayList<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4"); // 还能继续加,没事
// Collection 只是接口,不能直接 new
Collection<String> c = new ArrayList<>();
// 只能用它的子类 ArrayList、HashSet 来赋值