Java LinkedHashMap/Set的Entry对象包含多少个指针?
关于LinkedHashSet中Entry的指针问题
没错,LinkedHashSet底层依赖的LinkedHashMap.Entry确实包含两组指针,分别服务于两种不同的链表逻辑:
- 第一组是继承自
HashMap.Node的next指针:用来处理哈希冲突,把哈希值相同、被分配到同一个桶里的元素串成链表(JDK 8及以后,当链表长度达到阈值时会转为红黑树优化查询效率)。 - 第二组是
LinkedHashMap.Entry新增的before和after指针:这是一个双向链表的指针对,专门用来维护元素的插入顺序(如果是访问顺序模式的LinkedHashMap,则维护访问顺序)——这也是LinkedHashSet能保证元素按插入顺序迭代的根本原因。
简单来说,LinkedHashSet本质就是对LinkedHashMap的包装,所以完全复用了LinkedHashMap的Entry结构,不需要额外实现条目逻辑。
内容的提问来源于stack exchange,提问作者Krishna Upadhyay
相关产品推荐
相关产品推荐

