Tôi muốn viết một trình so sánh cho phép tôi sắp xếp TreeMap theo giá trị thay vì thứ tự tự nhiên mặc định.
Tôi đã thử một cái gì đó như thế này, nhưng không thể tìm ra những gì đã sai:
import java.util.*;
class treeMap {
public static void main(String[] args) {
System.out.println("the main");
byValue cmp = new byValue();
Map<String, Integer> map = new TreeMap<String, Integer>(cmp);
map.put("de",10);
map.put("ab", 20);
map.put("a",5);
for (Map.Entry<String,Integer> pair: map.entrySet()) {
System.out.println(pair.getKey()+":"+pair.getValue());
}
}
}
class byValue implements Comparator<Map.Entry<String,Integer>> {
public int compare(Map.Entry<String,Integer> e1, Map.Entry<String,Integer> e2) {
if (e1.getValue() < e2.getValue()){
return 1;
} else if (e1.getValue() == e2.getValue()) {
return 0;
} else {
return -1;
}
}
}
Tôi đoán những gì tôi hỏi là: Tôi có thể được Map.Entrythông qua bộ so sánh không?