Given the code fragment:
public class Foo {
public static void main(String[] args) {
Map<Integer, String> unsortMap = new HashMap<>();
unsortMap.put(10, "z");
unsortMap.put(5, "b");
unsortMap.put(1, "d");
unsortMap.put(7, "e");
unsortMap.put(50, "j");
Map<Integer, String> treeMap = new TreeMap<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
treeMap.putAll(unsortMap);
for (Map.Entry<Integer, String> entry : treeMap.entrySet()) {
System.out.print(entry.getValue() + " ");
}
}
}
What is the result?
A. A compilation error occurs.
B.
d b e z j
C.
j z e b d
D.
z b d e j
題解
TreeMap實作了SortedMap介面,所以存在TreeMap的項目元素是經過排序的。在實體化TreeMap物件的時候可以傳入自訂的Comparator物件來決定項目元素間比較大小的方式,但排序的依據是項目的key,而不是value。在這個題目中型態為Integer的key,比較大小的方式為反序排列,也就是說,數值愈大的會愈在前面。例如:1會在0之前,2會在1之前。
所以這題答案為選項C。