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
私はHashMap
をソートターンにTreeMap
のComparator
を意味する値
私は説明のおかげで、これの背後に理由を得ることができませんでした。 – Akash