这个问题在这里已经有答案了:
使用lambda和streams按值对Map排序(4个答案)
上个月关门了。
我见过大多数使用stream按值对Map进行排序的示例,但大多数示例使用的版本比我的略简单,不适用于我的案例。
有这个网站的例子类似于我的情况,但它没有工作得很好,因为它创建了“int不能被取消引用”错误,由于 compareTo()
函数,因为它不用于比较原语。
我也试过用 Comparator.comparing()
但它对排序没有任何影响。
我有下面这样的东西;
Map<String, Person> sortedMap = sortPersonByValue(personMap);
public static Map<String, Person> sortPersonByValue(final Map<String, Person> regions) {
return regions.entrySet()
.stream()
.sorted(((e1, e2) -> e1.getValue().getAge().compareTo(e2.getValue().getAge()))
//.sorted(Comparator.comparing(e1 -> e1.getValue().getAge()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));
}
如果有人能指出我做错了什么,我将不胜感激。谢谢
1条答案
按热度按时间gkn4icbw1#
假设age是int类型并且您想使用
Integer.compare(x,y)
版本: