我有一个HashMap<String, Float>
,其中充满了多个条目。
我想将HashMap的键保存到ArrayList<String>
中,但是要根据HashMap的相应值对该ArrayList进行排序。
有没有比对HashMap进行排序然后再使用
更好的解决方案ArrayList<String> sortedKeys = new ArrayList<String>(myHashmap.keySet());
顺便说一句,我并不是一定要使用HashMap,但是该值会设置顺序,并且我不希望交换键和值,因为浮点数可能会更改多次。
答案 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));