好消息啊->明天正式结束JAVASE的课程,开启MySQL课程和力扣刷题,MySQL初阶学完就开始前后端的学习

今日学习:集合

集合->List下的集合+LinkedList集合+Collections集合+泛型+红黑树+set集合

一、List下的集合
特点:有序、有索引、可重复

ArrayList:
- 底层数组实现
- 查询快、增删慢
- 日常开发最常用

Vector:
- 底层数组实现
- 线程安全(synchronized)
- 效率低,基本过时

================================================================

二、LinkedList集合
底层:双向链表实现
特点:增删快、查询慢

特有方法(操作头尾):
- addFirst() / addLast() 头尾添加
- removeFirst() / removeLast() 头尾删除
- getFirst() / getLast() 获取头尾
- push() / pop() 栈操作(弹夹模式)

适用场景:频繁头尾增删、模拟栈/队列

================================================================

三、Collections集合工具类
注意:是工具类,不是集合接口

常用静态方法:
- sort(List) 排序
- reverse(List) 反转
- shuffle(List) 随机打乱
- max() / min() 最大最小值
- addAll(Collection, T...元素) 批量添加
- swap(List, i, j) 交换指定位置元素

================================================================

四、泛型
人话:给集合加类型约束,编译期检查,避免强转异常

好处:
1. 编译期检查类型安全
2. 不用强转,代码干净
3. 代码可复用

通配符:
- <?> 任意类型
- <? extends E> 上限,E及其子类
- <? super E> 下限,E及其父类

泛型擦除:编译后泛型会被擦掉,运行时没有泛型信息

================================================================

五、红黑树
本质:自平衡的二叉查找树

五条规则:
1. 节点非红即黑
2. 根节点必须黑
3. 叶子节点(空节点)必须黑
4. 红节点的子节点必须黑(不能两红相连)
5. 任意节点到叶子,经过的黑节点数量相同

特点:
- 增删查都是O(logn)
- 高度平衡,不会退化成链表
- TreeSet / TreeMap 底层都是红黑树

================================================================

六、Set集合
特点:无序、无索引、不可重复

三个实现类:

HashSet:
- 底层哈希表(数组+链表+红黑树)
- 增删查都快,无序
- 去重靠:hashCode() + equals()
- 自定义类必须重写两个方法

LinkedHashSet:
- 哈希表 + 双向链表
- 有序(存的顺序)
- 比HashSet多了个链表记录顺序

TreeSet:
- 底层红黑树
- 可排序(自然排序/比较器排序)
- 元素必须实现Comparable接口
- 或构造时传Comparator比较器

Set遍历方式:迭代器 / 增强for / forEach(没有普通for,因为无索引)

百日大厂计划day13,一起加油!

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐