stream 分组后取最大值
时间: 2023-10-14 08:31:12 浏览: 162
java1.8 中 stream 的 groupingBy 最大值、最小值分组
如果要对一个数据流进行分组,并在每个组中取最大值,可以使用流处理框架(如Java 8中的Stream API)来实现。以下是一个示例代码:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class StreamGroupMax {
public static void main(String[] args) {
// 创建一个包含多个数字的列表
List<Integer> numbers = Arrays.asList(1, 3, 2, 5, 4, 6, 9, 8, 7, 10);
// 使用流API将数字分成两组:偶数和奇数
Map<Boolean, List<Integer>> evenOddMap = numbers.stream()
.collect(Collectors.partitioningBy(n -> n % 2 == 0));
// 对每个组中的数字取最大值
int maxEven = evenOddMap.get(true).stream().max(Integer::compareTo).orElse(-1);
int maxOdd = evenOddMap.get(false).stream().max(Integer::compareTo).orElse(-1);
// 输出结果
System.out.println("最大的偶数是:" + maxEven);
System.out.println("最大的奇数是:" + maxOdd);
}
}
```
在上面的代码中,我们首先将数字列表分成偶数和奇数两组,然后对每个组中的数字取最大值。最后,我们将结果输出到控制台。
阅读全文