Java 如何使用基于“的比较器创建树形图”;“外部”;价值观

Java 如何使用基于“的比较器创建树形图”;“外部”;价值观,java,treemap,Java,Treemap,我有一个Map otherMap,它将字符串的属性映射到一些相关的整数值 现在我想要一个TreeMap,它根据otherMap中关联的整数对键进行排序 我应该如何解决这个问题,记住什么是重要的 (这是一个后续步骤。)编写比较器时,确保结果一致(即随时间变化相同)并确保其实现一个比较 在TreeMap中使用比较器时,还需要它与equals一致,这意味着c.compare(e1,e2)返回0当且仅当e1.equals(e2) 考虑到这一点,可以按如下方式实现正确的比较器: class MyCompa

我有一个
Map otherMap
,它将字符串的属性映射到一些相关的整数值

现在我想要一个
TreeMap
,它根据
otherMap
中关联的整数对键进行排序

我应该如何解决这个问题,记住什么是重要的


(这是一个后续步骤。)

编写比较器时,确保结果一致(即随时间变化相同)并确保其实现一个比较

TreeMap
中使用比较器时,还需要它与equals一致,这意味着
c.compare(e1,e2)
返回
0
当且仅当
e1.equals(e2)

考虑到这一点,可以按如下方式实现正确的比较器:

class MyComparator implements Comparator<String> {

    Map<String, Integer> otherMap;

    public MyComparator(Map<String, Integer> otherMap) {
        this.otherMap = otherMap;
    }

    @Override
    public int compare(String o1, String o2) {
        int primary = otherMap.get(o1).compareTo(otherMap.get(o2));
        if (primary != 0)
            return primary;
        // Fall back on comparing the string keys to ensure consistent results
        return o1.compareTo(o2);
    }
}
Comparator.comparing(k -> otherMap.get(k))
          .thenComparing(k -> k);