You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java TreeSet存储Pair元素时同值不同键元素无法插入的解决方法

问题解决:TreeSet存储Pair时同value不同key元素无法插入的处理

问题原因

你当前使用的TreeSet比较器仅对比Pair的value值,当两个Pair的value相等时,比较器返回0。TreeSet会将返回0的元素判定为重复元素,因此拒绝插入同value但不同key的Pair。

解决方案

修改Comparator逻辑,先按value降序排序,当value相等时再对比key值,确保不同key的元素不会被判定为重复。示例代码如下:

TreeSet<Pair<Integer, Integer>> sortedSet = new TreeSet<>((a, b) -> {
    // 优先按value降序排序
    int valueCompare = b.getValue() - a.getValue();
    if (valueCompare != 0) {
        return valueCompare;
    }
    // value相等时,按key升序排序(可根据需求改为降序:b.getKey() - a.getKey())
    return a.getKey() - b.getKey();
});

逻辑说明

  • 当两个Pair的value不同时,按value降序排列,符合初始需求;
  • 当value相同时,通过key的差值返回非0结果,TreeSet会将其视为不同元素完成插入,同时保证同value的元素按key有序排列。

内容的提问来源于stack exchange,提问作者Catalina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 12:31:03