【发布时间】:2022-09-30 22:40:19
【问题描述】:
我有以下地图:
public Map<Player, Integer> results = new LinkedHashMap<>();
我想在结果图中创建一个具有相同整数值(highestScore)的新玩家列表。
我计算highestScore - 工作正常:
Optional<Integer> highestScore = scoreResultsSorted.entrySet().stream().map(Map.Entry::getValue).findFirst();
我初始化了public List<Player> tiePlayers = new ArrayList<>();
我的方法是:
1)
for (Map.Entry<Player, Integer> entry : results.entrySet()) {
if (entry.getValue().equals(highestScore)) {
tiePlayers.add(entry.getKey());
}
}
-
tiePlayers = (List<Player>) results.entrySet().stream().filter(entry -> entry.getValue().equals(highestScore)).map(Map.Entry::getKey);
第一个返回空数组 [],第二个返回 \"java.lang.ClassCastException: class java.util.stream.ReferencePipeline$3 cannot be cast to class java.util.List (java.util.stream.ReferencePipeline$3 and java.util.List 位于加载器\'bootstrap\')\" 的模块 java.base 中。
第二个例外我真的没有得到。在第一个我找不到它空的原因。
标签: java