LinkedHashMap底层实现原理 [Java]

本文详细解析了LinkedHashMap的底层实现,它作为HashMap的子类,通过在每个Entry节点上增加before和after引用,实现了元素的插入顺序保持。LinkedHashMap.Entry类扩展了HashMap.Node类,并添加了双向链表结构,使得元素可以按照插入顺序或访问顺序进行遍历。这种设计在需要保持元素顺序的场景下非常有用。
摘要由CSDN通过智能技术生成

LinkedHashMap的底层实现原理:

LinkedHashMap中存储的元素我们在打印时可以按照这些元素装入集合的顺序进行打印

  • LinkedHashMap是HashMap类的一个子类
    • LinkedHashMap可以说是在HashMap的基础上添加了一对LinkedHashMap.Entry<K,V>类型的引用before和after

底层存储单元:

LinkedHashMap中底层是通过LinkedHashMap.Entry类进行存储的

  • LinkedHashMap.Entry类继承了HashMap.Node类
  • LinkedHashMap.Entry类在HashMap.Node类的基础上添加了一对引用,添加了一个LinkedHashMap.Entry<K,V>类型的before和after引用,一个指向前一个添加的元素,一个指向后一个添加的元素

HashMap.Entry和LinkedHashMap的底层源码:

HashMap.Entry底层源码:

static class Node<K,V> implements Map.Entry<K,V>{
    final int hash;
    final K key;
    V value;
    Node<K,V> next;
}

LinkedHashMap底层源码:

static class Entry<K,V> entends HashMap.Node<K,V>{
    Entry<K,V> before,after;
    Entry(int hash,K key,V value,Node<K,V> next){
        super(hash,key,value,next)
    }
}
  • 上面的Entry<K,V> before,after;就是声明了两个引用,这两个引用中before指向了前一个元素,另一个after指向了后一个元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值