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

Chr*_* H. 3 java sorting arraylist hashmap

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

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

ArrayList<String> sortedKeys = new ArrayList<String>(myHashmap.keySet());
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我不必首先使用HashMap,但是值设置了顺序,我不想要交换键和值,因为float可能会改变几次.

Ous*_* D. 8

您可以使用流API:

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


Swe*_*per 6

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

ArrayList<String> list = new ArrayList<>(myHashMap.keySet());
list.sort(Comparator.comparing(myHashMap::get));
Run Code Online (Sandbox Code Playgroud)