hashmap和hashtable 1.7 与1.8的区别
时间: 2024-05-27 11:13:42 浏览: 14
好的,关于hashmap和hashtable 1.7 与1.8的区别,我可以回答您。 在Java 1.8中的Hashmap实现中,链表法的基本思想没有改变,但是在HashMap的实现过程中,引入了红黑树的结构,使得在某些条件下,HashMap的性能有了显著的提升。此外,Java 1.8的Hashtable类已经被取代,推荐使用ConcurrentHashMap类。
相关问题
HashMap,ConcurrentHashMap1.7和1.8的区别
HashMap和ConcurrentHashMap在JDK 1.7和JDK 1.8中有一些区别。在JDK 1.7中,HashMap的数据结构是由一个Entry数组和多个Entry链表组成,每个Entry中包含键值对的信息。而ConcurrentHashMap在JDK 1.7中的数据结构是由一个Segment数组和多个HashEntry组成,每个Segment内部是一个类似于HashMap的结构。每个Segment内部的扩容逻辑和HashMap中一样。
在JDK 1.8中,HashMap的数据结构进行了优化,引入了红黑树来替代链表,以提高搜索性能。当链表长度超过阈值时,链表会转换为红黑树。而ConcurrentHashMap在JDK 1.8中的数据结构也进行了优化,底层数据结构由Segment数组变为了Node数组,使用了CAS(Compare and Swap)操作来实现线程安全。
另外,ConcurrentHashMap在进行get操作时,需要先进行一次hash定位到Segment的位置,然后再进行hash定位到具体的HashEntry,然后在该HashEntry下的链表中进行比对。而HashMap则直接通过计算hash值就可以找到对应的Entry。
HashMap 在 jdk 1.7 和 1.8 的区别?
在 JDK 1.7 中,HashMap 内部使用数组和单向链表来实现哈希表。但是,当链表长度达到一个阈值时,链表会转化为红黑树以提高性能。这个阈值的默认值是 8。此外,JDK 1.7 中的 HashMap 采用“头插法”来解决哈希冲突,这意味着新插入的元素会被放在链表的头部。
在 JDK 1.8 中,HashMap 的内部实现发生了较大的变化。首先,当链表长度达到一个阈值时,链表不再转化为红黑树,而是采用了一个新的数据结构——链表和红黑树的混合结构。这个结构称为“链表+红黑树”,它可以在保证平均时间复杂度为 O(1) 的情况下,处理链表长度较长的情况。此外,JDK 1.8 中的 HashMap 采用“尾插法”来解决哈希冲突,这意味着新插入的元素会被放在链表的尾部。
总的来说,JDK 1.8 中的 HashMap 在性能和可扩展性方面都有了重大的改进,可以更好地满足实际应用的需求。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)