Java LinkedHashMap 获取第一个或最后一个条目

2022-08-31 07:03:37

我使用LinkedHashMap,因为它很重要,键在映射中输入的顺序很重要。

但现在我想首先(第一个输入的条目)或最后一个条目中获取key的值。

应该有一个像和这样的方法吗?first()last()

我是否需要有一个迭代器才能获取第一个密钥条目?这就是我使用LinkedHashMap的原因!

谢谢!


答案 1

的语义仍然是 Map 的语义,而不是 .是的,它保留了插入顺序,但这是一个实现细节,而不是其接口的一个方面。LinkedHashMapLinkedList

获得“第一个”条目的最快方法仍然是 。获取“最后一个”条目是可能的,但需要通过调用来迭代整个条目集,直到到达最后一个条目集。entrySet().iterator().next().next()while (iterator.hasNext()) { lastElement = iterator.next() }

编辑:但是,如果你愿意超越JavaSE API,Apache Commons Collections有自己的LinkedMap实现,它具有firstKeylastKey等方法,它们可以完成您正在寻找的功能。界面要丰富得多。


答案 2

你可以尝试做这样的事情(以获得最后一个条目):

linkedHashMap.entrySet().toArray()[linkedHashMap.size() -1];