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

use*_*403 1 java linkedhashmap

我有从db返回的LinkedHashMap.从这张地图我需要得到确切的最后一个元素(键).如果我使用keySet方法获取所有键,则返回Set of keys但Set不保证顺序.我需要从db返回的链接hashmap中取出最后一个键.我怎样才能做到这一点 ?

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

LinkedHashMap<String,String> map = someDao.getMap(String input);
Run Code Online (Sandbox Code Playgroud)

从这张地图我需要采取最后一个元素.

谢谢!

Ale*_*exR 6

keySet()LinkedHashMap返回时执行,但LinkedHashSet确实Set"记住"元素的顺序.

您可以获得以下最后一个元素:

Map<TheType> map = .....
.................
TheType theLastKey = new ArrayList<>(map.keySet()).get(map.size() - 1)
Run Code Online (Sandbox Code Playgroud)

  • 有更好的方法来获取可迭代的最后一个值 - *不*占用O(n)空间的方式.例如,请参阅Guava的Iterables.getLast. (4认同)
  • 那么你给出的代码甚至都不会编译,但如果它是`new ArrayList <TheType>(map.getKeys())`那么它*会*表现出这个问题 - 因为该构造函数会复制所有元素. (2认同)