从 dao 层返回的链接哈希图中获取最后一个元素?

问题描述 投票:0回答:3

我有 LinkedHashMap 从数据库返回。从这张地图中我需要准确地获取最后一个元素(键)。如果我使用 keySet 方法获取所有键,它会返回键集,但 Set 不保证顺序。我需要从数据库返回的链接哈希图中获取最后一个键。我该怎么做?

下面是我如何从数据库获取数据的代码。

LinkedHashMap<String,String> map = someDao.getMap(String input);

从这张地图中我需要获取最后一个元素。

谢谢!

java linkedhashmap
3个回答
6
投票

keySet()

 上执行 
LinkedHashMap
返回
LinkedHashSet
,它确实是
Set
,但“记住”元素的顺序。

您可以按如下方式获取最后一个元素:

Map<TheType> map = .....
.................
TheType theLastKey = new ArrayList<>(map.keySet()).get(map.size() - 1)

0
投票

另一篇文章的答案帮助我找到了这个答案。请参考 Java HashMap:如何通过索引获取键和值?查看原始帖子。

Object myKey = myHashMap.keySet().toArray()[0];

我替换了 0

toArray()[0]  - (where 0 represents the first item in the keyset)

与按键组的大小

toArray()[(keyset().size)-1] 

注意:如果末尾没有 -1,您将得到 ArrayIndexOutOfBoundsException。


0
投票

可以使用

LinkedHashMap
 方法轻松访问 
lastEntry()
的最后一个条目,该方法作为 sequenced collections 增强功能的一部分添加到 Java 21 中。可以从此检索最后一个密钥
Entry

LinkedHashMap<String,String> map = someDao.getMap(String input);

Entry<String,String> lastValue = map.lastEntry();
String lastKey = lastEntry.getKey();
© www.soinside.com 2019 - 2024. All rights reserved.