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);
    }
posted @ 2023-07-10 18:02  大熊猫同学  阅读(74)  评论(0)    收藏  举报