TreeMap 比较器的理解
TreeMap 比较器:比较的是 key 的顺序。如果 key 是相同的,则 put 时,会将新的value覆盖旧value。
如下示例:
'a' 和 'b' 在比较器定义中被视为“相同”。
public static void main(String[] args) {
HashMap<Character,Integer> map = new HashMap();
map.put('a', 1);
map.put('b', 1);
TreeMap<Character, String> treeMap = new TreeMap<>(new Comparator<Character>() {
@Override
public int compare(Character o1, Character o2) {
return map.getOrDefault(o1, 0).compareTo(map.getOrDefault(o2, 0));
}
});
treeMap.put('a', "i am a");
treeMap.put('b', "i am b");
//根据 treemap 定义的比较器, 以 treemap 而言,'a' 和 'b' 是同一个元素
//输出 1
System.out.println(treeMap.size());
//输出[a]
System.out.println(treeMap.keySet());
//输出 a="i am b", 'a' 被关联了新的 value
System.out.println(treeMap);
}

浙公网安备 33010602011771号