我有
LinkedHashMap
从DB回来。从这张地图上我需要得到最后一把钥匙。如果我使用 keySet
方法获取所有键,它会返回 Set
键,但 Set
不保证顺序。我需要从数据库返回的LinkedHashMap
中获取最后一个键。我怎样才能做到这一点?
下面是我如何从数据库获取数据的代码。
LinkedHashMap<String,String> map = someDao.getMap(String input);
从这张地图上我需要拿走最后一把钥匙。
keySet()
上执行
LinkedHashMap
返回 LinkedHashSet
,它确实是 Set
,但“记住”元素的顺序。
您可以按如下方式获取最后一个元素:
Map<TheType> map = .....
.................
TheType theLastKey = new ArrayList<>(map.keySet()).get(map.size() - 1)
另一篇文章的答案帮助我找到了这个答案。请参考 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。
可以使用
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();