gpt4 book ai didi

java - 获取 Java 8 流的最小值和最大值的简洁方法

转载 作者:太空狗 更新时间:2023-10-29 22:42:03 29 4
gpt4 key购买 nike

有没有一种简洁的方法可以一次提取流的最小值和最大值(基于某些比较器)?

似乎有很多方法可以单独获取最小值和最大值,或者我可以将流排序到一个临时对象中,例如:

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/

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