gpt4 book ai didi

java - 如何在不覆盖compareTo的情况下按对象的hashmap中的键排序?

转载 作者:行者123 更新时间:2023-12-04 09:40:48 28 4
gpt4 key购买 nike

关闭。这个问题需要debugging details .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

去年关闭。




Improve this question




我有这个 HashMap Map<Person, List<Information>> .如何通过类 Person 中的 double 属性以相反的顺序对这张 map 进行排序?

我试过这个:

origin.entrySet().stream()
.sorted(Comparator.comparingDouble(k -> k.getKey().getScore())
.collect(
Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldValue, newValue) -> oldValue,
LinkedHashMap::new));

它有效,但由于我使用函数 .reversedgetScore()然后 getKey()返回错误。 Cannot resolve method 'getKey' in 'Object
类(class)人物:
public class Person{
double score;
Information information;

}

最佳答案

解决该问题的一种简单方法是将 Comparator 移到流管道之外:

Comparator<Entry<Person,List<Information>>> byScore = Comparator.comparingDouble(k -> k.getKey().getScore());
origin.entrySet().stream()
.sorted(byScore.reversed())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldValue, newValue) -> oldValue,
LinkedHashMap::new));

或在 lambda 中提供显式参数类型:
origin.entrySet().stream()
.sorted((Comparator.comparingDouble((Entry<Person,List<Information>> k) -> k.getKey().getScore())).reversed())
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldValue, newValue) -> oldValue,
LinkedHashMap::new));

关于java - 如何在不覆盖compareTo的情况下按对象的hashmap中的键排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62343560/

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