HashMap通常,的实现是无序的
Iteration。
linkedHashMap是 predictablely
订购
Iteration(插入顺序),但不公开的
List接口和
linkedList(这是镜子按键插入顺序)不跟踪指数本身无论是位置,这是非常的高效的找到索引为好。在
linkedHashMap不暴露所述参考内部
linkedList任一。
实际的 “链接列表” 行为是特定于实现的。有些人可能实际上使用了
linkedList许多实例,而这些实例只是Entry跟踪上一个和下一个,Entry并将其用作其实现。在不查看源代码的情况下不要承担任何责任。
在
KeySet包含该键不保证顺序以及由于用于继承的后备数据结构放置的散列算法
HashMap。所以你不能使用它。
做到这一点的唯一方法,而无需编写您自己的实现,就是
Iterator使用镜像来遍历,
linkedList并保留您的位置,这对于大数据集将是非常低效的。
解
这听起来像是您想要的 原始插入顺序索引位置
,您将不得不
KeySet像中那样镜像键
ArrayList,使其与的更新保持同步,
HashMap并使用它来查找位置。创建的子类
HashMap,比如说
IndexedHashMap并在
ArrayList内部添加一个
.getKeyIndex(<K>key),然后添加一个委派给内部的类
ArrayList
.indexOf(),可能是解决此问题的最佳方法。
这是什么
linkedHashMap,但使用而不是进行
linkedList镜像。
KeySet``ArrayList



