Java 中散列表、树所对应的容器类。hashmap 如何解决冲突

散列表对应的容器

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

-----------本文结束感谢您的阅读-----------
0%