我了解HashMap的内部工作原理。LinkedHashMap扩展了HashMap类。那么LinkedHashMap如何能够保持插入顺序呢?我已经阅读了LinkedHashMap的javadoc,但没有详细说明。请有人帮助我理解吗?
提前感谢。
http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html.
这种实现的想法非常简单。它扩展了常规的哈希映射(因此具有所有哈希映射的好处),但在添加元素时还构建了双向链表。
(条目也从HashMap.Entry扩展,因此它们具有指向之后和之前的指针)因此,所有条目都按顺序排列为HEAD -> Entry1 <-> Entry2 ... <-- TAIL
同时保留在标准HashSet中(我假设您熟悉其实现方式)。
现在,在迭代时使用条目的链接列表。
它内部维护着双向链表(Map.Entry),以便按顺序存储对象,因为双向链表存储了前一个节点和后一个节点的地址。
您也可以在源代码中进行检查。
LinkedHashMap
的源代码吗? - cherouvim