HashMap的实现原理,以及在JDK1.7和1.8的区别

HashMap在Java中使用位桶和链表结合的数据结构,JDK1.7中遇到哈希冲突时使用拉链法。在JDK1.8中,当链表超过8个节点时,会转换为红黑树,以提升查找效率。扩容策略为当容量达到0.75倍初始容量时,进行扩容。JDK1.8的最大区别在于引入了红黑树优化存储速度。
摘要由CSDN通过智能技术生成

1.JDK1.7    

    HashMap是Java中大家最常用的一个map实现类,其为键值对也就是key-value的形式。他的数据结构则是采用的位桶和链表相结合的形式完成了,即拉链法。具体如下图所示:

 

    HashMap里面存储的是静态内部类Entry的对象,这个对象其实也是一个key-value的结构。以下是Entry的源码:

 static class Entry<K,V> implements Map.Entry<K,V> {
        final K key;
        V value;
        /** 指向下一个元素的引用 */
        Entry<K,V> next;
        int hash;

        /**
         * 构造方法为Entry赋值
         */
        Entry(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值