如何使用键在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

回到顶部