public class Solution {
public static void main(String[] args) {
HashMap<String,Integer> hm = new HashMap<>();
hm.put("red",23);
hm.put("orange",1);
hm.put("yellow",32);
hm.put("green",23);
TreeMap<String,Integer> tm = new TreeMap<>(new ValueComparator(hm));
tm.putAll(hm);
for(String key : tm.keySet())
System.out.println(key+" "+tm.get(key));
}
}
class ValueComparator implements Comparator<String>{
Map<String, Integer> map;
public ValueComparator(Map<String, Integer> map){
this.map =map;
}
public int compare(String a, String b){
return map.get(b).compareTo(map.get(a));
}
}
问题:它正确地根据值进行排序,但删除重复值。可以请某人指出原因。Java TreeMap基于值去除重复值的排序
电流输出:
yellow 32
red 23
orange 1
预期输出:
yellow 32
red 23
green 23
orange 1
我已经使用Comparator
内部TreeMap
,这又排序HashMap
基于值
感谢您的解释,我无法得到背后的原因。 – Akash