[Java] Node和Entry

关于Node和Entry的总结与分析

涉及到的接口和类:

  1. Map.Entry接口
    • 注意:这里的Map是一个接口,而我们的Map.Entry也是一个接口,这个时候就说明了我们的Map.Entry接口是Map接口中的一个内部接口
      • 不仅可以有内部类,也可以有内部接口
  2. HashMap.Node类
  3. LinkedHashMap.Entry类
  4. TreeMap.Entry类
  5. Hashtable.Entry类

这几个API的使用位置和作用:

  • HashMap.Node作为HashMap的底层存储单元
    • 我们创建HashSet底层其实就是创建了一个HashMap对象,所以我们就可以说是HashSet底层的存储单元也是HashMap.Node
  • LinkedHashMap.Entry作为LinkedHashMap的底层存储单元
    • 我们创建LinkedHashSet底层其实就是创建了一个LinkedHashMap类的对象,所以我们就说是LinkedHashMap底层的存储单元也是LinkedHashMap.Entry
  • TreeMap.Entry类作为TreeMap的底层存储单元
    • 我们创建TreeSet类的时候底层其实就是创建了一个TreeMap类的对象,所以我们就说是TreeSet的底层存储单元也是TreeMap.Entry
  • Hashtable.Entry类作为Hashtable的底层存储单元

这几个API的之间的继承与实现关系:

  1. HashMap类实现了Map.Entry接口
  2. LinkedHashMap.Entry类继承了HashMap.Node类
  3. TreeMap.Entry类实现了Map.Entry接口
  4. Hashtable.Entry实现了Map.Entry接口

关于这几个API中都记录了什么(封装了什么属性?)

  1. HashMap.Node中 ---- 记录了结点的hash(哈希值) , key , value , next(Node<K,V> next),用于存储单向链表结构中的数据
  2. Hashtable.Entry中 ---- 记录了结点的hash ,key ,value ,next, 用于存储单向链表结构中的数据
  3. LinkedHashMap.Entry中 ---- 不仅记录了结点的hash , key , value , next,还维护了一个双向的数据结构(其实就是维护了两个LinkedHashMap.Entry类的两个引用before和after)
  4. TreeMap.Entry中 ---- 记录了结点的key, value,还维护了一个红黑树的数据结构(也就是还维护了 左右结点 , 父结点 , 信息 ,和自身颜色)

总结:

  1. 通过这几个类和接口的名字我们不难发现,这里的Node和Entry都是内部类或者内部接口
  2. 我们在创建Set时其实是在底层创建了对应结构的Map对象
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值