184-1.8-集合
Collection
iterator
hasnext 是否有下一个元素
next 获取元素,指向后移
collection.remove 删除一个元素后,后续元素自动迁移,所以--》如果两个相同的元素也相邻,使用循环删除第一个元素,第二个迁移会被跳过,没删除。
-- 如果要确保相邻且相同的元素删除,在执行删除的同时 i--,相当于游标回退一次,再次检查。
iterator.remove()--指向谁,删除谁,循环使用,不担心相同且相邻被跳过,光标自动指向。
--增强for--集合--实现了-iterable接口
for(String s :collection ){
}
Collection
1.List 2.Set
--数据结构
1.栈--后进先出
2.队列--先进先出
数组
链表--单向链表--双向链表
ArrayList--底层数组
LinkedList--底层链表
======
泛型
<E>
java5以后出现,解决数据类型不一致问题,编辑阶段就可以发现。
--一种规范与约束
<?>--通配符 都可以
<? extends A> A的子类
<? super B>B的父类
====8.4 Set
TreeSet
比较器Compare
默认的--自定义的
类中定义
匿名内部类定义
8.5 数据结构
树结构
tree
二叉树
二叉查找树,左侧小,右侧大
二叉平衡树
左右高度差不超过1
超过了触发
旋转
右右往左
左左往右
右左 先右再左
左右 先左再右----真能折腾
TreeSet --- 红黑树---子节点 左大 或者 右大 都可以 看 Compare 定义
------------------------------------------------------牛逼了

红黑树
规则一大堆
1。根节点是黑色
2。叶节点 黑色(无数值的节点)
3。不能出现两个红色相连
4。每个节点到后代节点简单路径上,黑色节点数量一致
插入默认红色效率最高
新增规则
1.根节点变黑
2.1 父节点黑色,不用动
2.2.1 父节点 红色 叔叔 也是红色 -- 父亲和叔叔变黑 --爷爷变红(爷爷是根节点,则爷爷变黑)
2.2.2 父节点 红色 叔叔 是黑色 --父亲变黑,爷爷变红,以爷爷为支点,旋转
------------------------------------------------------牛逼了


浙公网安备 33010602011771号