JAVA+Agent学习day13
好消息啊->明天正式结束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,一起加油!
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)