gpt4 book ai didi

java - TreeMap 元素未删除

转载 作者:行者123 更新时间:2023-12-02 05:13:49 25 4
gpt4 key购买 nike

我创建了一个 map ,然后对值进行排序并将它们放入 TreeMap 中。但问题是当我在 Treemap 上调用remove()方法时,该元素没有被删除。有人知道问题出在哪里吗?

这是我的代码:

Map<String , Double> map=new HashMap<String, Double>();
TreeMap<String, Double> sortedItems = sortMap(map);
sortedItems.remove("I put the key here as a string");


public TreeMap<String, Double> sortMap(Map<String, Double> map) {
HashMap<String, Double> map2 = new HashMap<String, Double>(map);
TreeMap<String, Double> sortedMap = SortByValue(map2);
return sortedMap;
}

public TreeMap<String, Double> SortByValue
(HashMap<String, Double> map) {
ValueComparator vc = new ValueComparator(map);
TreeMap<String, Double> sortedMap = new TreeMap<String, Double>(vc);
sortedMap.putAll(map);
return sortedMap;
}
class ValueComparator implements Comparator<String> {

Map<String, Double> map;

public ValueComparator(Map<String, Double> base) {
this.map = base;
}

public int compare(String a, String b) {
if (map.get(a) >= map.get(b)) {
return -1;
} else {
return 1;
} // returning 0 would merge keys
}

最佳答案

需要返回0;当你期待一场比赛时。解决这个问题的方法是比较 key ,否则是匹配的。这样,相同的 key 就会匹配,但只是相同的 key 。

public int compare(String a, String b) {
int cmp = -map.get(a).compareTo(map.get(b));
if (cmp == 0)
cmp = a.compareTo(b);
return cmp;
}

这样,映射到相同 Double 的 String 键将被视为不同的,当且仅当它们是不同的字符串时。

关于java - TreeMap 元素未删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27131679/

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