从 LinkedHashMap 获取最后一个键

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

我有

LinkedHashMap
从DB回来。从这张地图上我需要得到最后一把钥匙。如果我使用
keySet
方法获取所有键,它会返回
Set
键,但
Set
不保证顺序。我需要从数据库返回的
LinkedHashMap
中获取最后一个键。我怎样才能做到这一点?

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

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.