gpt4 book ai didi

java.util.NoSuchElementException - 迭代排序的树形图

转载 作者:行者123 更新时间:2023-12-01 12:26:19 24 4
gpt4 key购买 nike

我正在循环我的程序,并且由于某种原因我遇到了以下错误

Exception in thread "main" java.util.NoSuchElementException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(Unknown Source)
at java.util.TreeMap$KeyIterator.next(Unknown Source)
at EloRating.setNewSeason(EloRating.java:242)

此错误指向迭代器循环。

TreeMap<String,Double> treeMap = new TreeMap<String,Double>();
for (Entry<String, Double> team : teamsIntersection.entrySet()) {
treeMap.put(team.getKey(), listTeams.get(team.getKey()).getRating());
}

SortedSet<Entry<String, Double>> listSorted = entriesSortedByValues(treeMap);
Iterator<Entry<String, Double>> iter = listSorted.iterator();

int stop = (amountOfIntersectTeams+1)/2;
for(int i = 0; i < (stop-1); i++){
-----------> iter.next();
}
double median = iter.next().getValue();

如果我执行该程序一次,不会发生任何特殊情况。但出于某些基准测试的原因,我必须使用一些稍微调整的参数来循环程序 25.000 次。当我尝试使用错误后的参数再次启动程序时,它会走得更远。 [出现此错误时,迭代器包含 10 个值]

目标

我想要获得 Hashmap groupsIntersection 值的上中位数。例如a-3 b-1 c-2 d-2 e-5 f-4 然后我想从 a 返回 3 的值

条目按值排序

static <K,V extends Comparable<? super V>>
SortedSet<Map.Entry<K,V>> entriesSortedByValues(Map<K,V> map) {
SortedSet<Map.Entry<K,V>> sortedEntries = new TreeSet<Map.Entry<K,V>>(
new Comparator<Map.Entry<K,V>>() {
@Override public int compare(Map.Entry<K,V> e1, Map.Entry<K,V> e2) {
return e1.getValue().compareTo(e2.getValue());
}
}
);
sortedEntries.addAll(map.entrySet());
return sortedEntries;
}

最佳答案

如果您有多个具有相同值的条目,它们将被您编写的比较器合并,因为 TreeSet 会相对于其比较器删除元素。 p>

假设 amountOfIntersectTeams 是您正在处理的 map 的大小,这是我对正在发生的情况的最佳选择。

为了解决这个问题,我会考虑在值比较相等时在 Comparator 中添加对键的二次比较。

关于java.util.NoSuchElementException - 迭代排序的树形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26304796/

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