将HashMap的键保存到ArrayList中,ArrayList按Java中的HashMaps值排序



我有一个HashMap<String, Float>,它填充了几个条目。我想将HashMap的键保存到ArrayList<String>中,但根据HashMap的相应值对ArrayList进行排序。

有没有比排序HashMap,然后使用更好的解决方案

ArrayList<String> sortedKeys = new ArrayList<String>(myHashmap.keySet());

顺便说一句,我一开始并不一定要使用HashMap,但值设置顺序,我不想要交换键和值,因为浮点值可能会更改好几次。

您可以使用流API:

List<String> sortedKeys = myMap.entrySet()
.stream()
.sorted(Map.Entry.comparingByValue())
.map(Map.Entry::getKey)
.collect(Collectors.toCollection(ArrayList::new));

如果我理解正确,你可以先从键创建数组列表,然后排序:

ArrayList<String> list = new ArrayList<>(myHashMap.keySet());
list.sort(Comparator.comparing(myHashMap::get));

最新更新