gpt4 book ai didi

java - 具有自定义比较器的 TreeMap 不会删除条目

转载 作者:行者123 更新时间:2023-12-01 18:17:55 25 4
gpt4 key购买 nike

所以我有一个 TreeMap使用一个简单的自定义比较器,根据其值对 map 进行排序。

    Map<Integer, Double> unsortedMap = new HashMap<Integer, Double>();
unsortedMap.put(..,..)
...
...

Map<Integer, Double> map = new TreeMap<Integer, Double>(new SortValues(unsortedMap));

public class SortValues implements Comparator<Integer> {
Map<Integer, Double> map;

SortValues(Map<Integer, Double> map) {
this.map = map;
}

@Override
public int compare(Integer one, Integer two) {
if(map.get(one) >= map.get(two)) {
return 1;
} else
return -1;
}
}
}

我打印了 map ,看起来不错。但是当我这样做时map.remove(key)它不会删除它,因为当我打印它时我仍然看到它。我在这里缺少什么?

最佳答案

您的 compare 方法有缺陷,因为它无法返回 0。如果两个对象相等,则需要返回0,而不是1

更改您的 compare 方法,以便在两个 Integer 相等时返回 0

这将允许TreeMap找到Integer,它依赖于compare返回0来确定相等性.

关于java - 具有自定义比较器的 TreeMap 不会删除条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28506122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com