【发布时间】:2019-06-04 22:49:13
【问题描述】:
我有一个整数列表,并希望通过 2 个属性以排序方式打印它们的所有元素:列表大小和列表中元素的总和。我阅读了流 thenComparing 方法,但每当我尝试使用它时都会出现错误。
我编写了一些有效的代码,但想知道是否有其他更简洁的方法可以做到这一点。提前致谢!
Map<List<Integer>, Double> entropies = new HashMap<>();
// Extra code removed
entropies.keySet()
.stream().sorted(Comparator.comparingInt(o -> {
List<Integer> a = (List<Integer>) o;
return a.size();
}).thenComparingInt(o -> {
List<Integer> a = (List<Integer>) o;
return a.stream().mapToInt(Integer::intValue).sum();
}))
.forEach(key -> logger.debug("{} => {}", key, entropies.get(key)));
与实际输出相同,但没有铸件会很棒。
【问题讨论】:
标签: java hashmap java-stream comparator