如何使用键在LinkedHashMap中获取键/值的位置
嗨,我有一个LinkedHashMap(称为信息),其中包含名称/年龄(字符串/整数)对。我想找出,如果我输入键,如何获得键/值的位置。例如,如果我的LinkedHashMap看起来像这样{bob
= 12,jeremy = 42,carly =
21}并且我要搜索jeremy,它应该返回1作为其位置1。我希望我可以使用诸如info.getIndex这样的东西(“杰里米”)
回答:
HashMap
通常,的实现是无序的Iteration
。
LinkedHashMap
是
订购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
以上是 如何使用键在LinkedHashMap中获取键/值的位置 的全部内容, 来源链接: utcz.com/qa/433580.html