【简单理解】数组、数组列表、集合

1. 先分三个东西

  1. 普通数组 :int[] 、String[]
  2. ArrayList(数组列表)
  3. 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 来赋值
相关推荐
ym hyd 1112 小时前
试题库管理系统源码 Java+SpringBoot+Vue3 前后分离
java·vue.js·spring boot·毕设
AC赳赳老秦2 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
钱栈up2 小时前
mvn compile 卡死在 javac 阶段:一次类型不匹配的排查与修复
java·开发语言
吠品4 小时前
CSS图片模糊过渡:一个transition加filter就够
java·数据库·notepad++
步行cgn4 小时前
Spring 全注解开发详解
java·后端·spring
长河5 小时前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
code2cat5 小时前
Java进阶篇之LongAdder:把统计更新分散,再读取总和
java·并发编程·原子类·longadder
凯哥Java5 小时前
写代码怎么避免逻辑漏洞?
java·开发语言·人工智能·自动化
Ivanqhz5 小时前
正余弦位置编码(Sinusoidal Positional Encoding)
java·linux·数据库
BD_Marathon6 小时前
消息对象中字段的说明
java·前端·python