1 集合
1.1 集合类的继承图
通过观察类结构图的继承关系我们发现,集合的顶层接口Collection继承Iterable接口。
而在Iterable接口中有一个Iterator方法,它返回一个Itertator对象。
1.2 各类子类的具体实现
hashset: 基于hashmap实现,只存储key,value是固定的Object
TreeSet:基于treemaps实现,只存储key,value是固定的Object
arraylist: 基于数组实现,双倍扩容。
linkedList: 双向链表
hashmap: 链表数组<64,链表<8链表。如果大于8则扩展为红黑树
treeMap: 红黑树
1.1.1 快失败
快速失败”(fail-fast) 是一种错误检测机制,主要用于非线程安全的集合(如 ArrayList、LinkedList、HashSet、HashMap 等)。当使用迭代器(包括增强 for 循环)遍历集合时,如果在遍历过程中直接对集合结构进行了修改(如调用 add()、remove()、clear() 等方法,而不是迭代器自身的 remove() 方法),迭代器会立即抛出 ConcurrentModificationException,以避免后续不确定的行为。
1.2 红黑树
在 Java 中引入红黑树,主要是为了解决 HashMap 在哈希冲突严重时的性能退化问题,同时也作为 TreeMap / TreeSet 底层实现提供有序性保障 红黑树引入红色和黑色,核心目的是用更少的代价维护树的近似平衡,而不像 AVL 树那样追求绝对平衡。
1.3 hashcode
1.与equals强绑定。
2.与对象存储的内存地址有关。
3.重写equals就有必须重写hashcode.