JDK8的HashMap有哪些变化
时间: 2023-10-26 12:06:16 浏览: 80
Java 8 中 HashMap 到底有啥不同?.zip
JDK8中HashMap相较于JDK7有以下变化:
1. 数组+链表+红黑树:当链表长度超过8时,将链表转化为红黑树,从而提高查询效率。
2. 红黑树节点的引入:红黑树节点实现了Map.Entry接口,因此不需要额外的Entry类来保存键值对。
3. 链表的改变:在JDK7中,每个节点都是一个单独的Entry对象,而在JDK8中,每个节点是一个单独的Node对象,包含了key、value、hash值和指向下一个节点的指针,从而减少了对象创建和内存开销。
4. 性能优化:在JDK8中,对于链表长度小于8的链表,使用了更加高效的链表遍历方式,从而提高了性能。
5. 扩容机制的改变:在JDK8中,扩容时不再是一次性将table数组扩大为原来的两倍,而是按需扩容,即当table数组中的元素数量达到了负载因子与数组长度的乘积时,才进行扩容操作。
总体上,JDK8中HashMap的实现更加高效、简洁,并且对于多线程的支持也更好。
阅读全文