散列表对应的容器
HashMap、HashSet、HashTable、concurrentHashMap
树对应的容器
TreeMap、TreeSet
jdk7 与 jdk8 中 HashMap 的区别
jdk7 中的 HashMap 采用数组+链表,如果过多的的节点在 hash 时发生碰撞,则需要 O(n) 的时间来查找 Entry
jdk8 中 HashMap 采用数组+链表/红黑树,当某个桶位达到某个阈值时,链表将转化为红黑树,红黑树的时间复杂度为 O(nlogn)
HashMap 如何解决冲突
首先,对于 hash 冲突总共有三种解决方法,分别是 开放地址法,链表法,再哈希
在 HashMap 中使用的是链表法,对于 Entry 中 hash 值重复的 key 会被分配到同一条链表中,如果该 key 值已经存在则新的 value 会覆盖掉旧的 value。
TreeSet 继承自 TreeMap,HashSet 继承自 HashMap