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

时间:2018-07-20 10:07:31

标签: java sorting arraylist hashmap

我有一个HashMap<String, Float>,其中充满了多个条目。 我想将HashMap的键保存到ArrayList<String>中,但是要根据HashMap的相应值对该ArrayList进行排序。

有没有比对HashMap进行排序然后再使用

更好的解决方案
ArrayList<String> sortedKeys = new ArrayList<String>(myHashmap.keySet());

顺便说一句,我并不是一定要使用HashMap,但是该值会设置顺序,并且我不希望交换键和值,因为浮点数可能会更改多次。

2 个答案:

答案 0 :(得分:8)

您可以使用流API:

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

答案 1 :(得分:6)

如果我理解正确,则可以先根据键创建数组列表,然后进行排序:

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