Treema 自定义排序过程中的歧义

问题描述 投票:0回答:1

以下代码的输出是:

public static void main(String[] args) {
    String[] s = {"abc", "def", "ghi"};
    TreeMap<String, Integer> tm = new TreeMap<>((a, b) -> -a.length() + b.length());

    for (String k : s) {
        tm.merge(k, 1, Integer::sum);
    }

    System.out.println(tm);
    }

输出应为 {abc=1, def=1, ghi=1}

java oop collections frameworks
1个回答
0
投票

...输出应该是 {abc=1, def=1, ghi=1}

没有理由期待这种行为。每个比较操作都会为样本数据生成零(即“等于”),并且规范(即 Javadoc)中不保证

TreeMap
保留相等键的插入顺序。如果您想保留插入顺序,则需要使用
LinkedHashMap

© www.soinside.com 2019 - 2024. All rights reserved.