有没有一种简洁的方法可以一次提取流的最小值和最大值(基于某些比较器)?
似乎有很多方法可以单独获取最小值和最大值,或者我可以将流排序到一个临时对象中,例如:
List<T> sorted = Stream.of(...).sorted().collect(Collectors.toList());
T min = sorted.get(0);
T max = sorted.get(sorted.size() - 1);
但这并不简洁,需要分配一个临时对象。我宁愿不分配临时对象或两次通过流。有替代方案吗?
Pair<T> extent = Stream.of(...).???
最佳答案
summarizingInt
收集器在您有一个整数流时效果很好。
IntSummaryStatistics stats = Stream.of(2,4,3,2)
.collect(Collectors.summarizingInt(Integer::intValue));
int min = stats.getMin();
int max = stats.getMax();
如果你有 double ,你可以使用 summarizingDouble
收集器。
DoubleSummaryStatistics stats2 = Stream.of(2.4, 4.3, 3.3, 2.5)
.collect(Collectors.summarizingDouble((Double::doubleValue)));
关于java - 获取 Java 8 流的最小值和最大值的简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816264/