java - Java 8 流,过滤掉 Array 并获取计数,然后遍历数组直到前一个 Count 变量
问题描述
例如,我有一个数组
List<Integer> myArray = Arrays.asList(4, 13, 10, 21, 20);
我想计算这个数组中的总偶数,所以我使用了这样的东西:
int evenCount = (int)myArray.stream().filter(i -> i % 2 == 0).count();
所以在这种情况下 count 应该是3,但是我想要一些干净简洁的代码,并且可能将更多的方法链接在一起来遍历同一个数组,但直到我刚刚计算的这个 计数值,然后计算下面的奇数个数这条边界线,类似于:
return IntStream.range(0, evenCount-1).filter(i -> i % 2 !=0).count();
有没有更好的方法在 1 行中做到这一点?我觉得我重复循环了 2 次,但可以在第一个循环(迭代)中解决问题......
解决方案
是的,在这种情况下,您可以
Map<Boolean, Long> result = List.of(4, 13, 10, 21, 20).stream()
.collect(Collectors.partitioningBy(e -> e % 2 == 0, Collectors.counting()));
System.out.println("result = " + result); // result = {false=2, true=3}
推荐阅读
- python - Python:特殊字符转二进制
- aws-lambda - 如何使用 AWS Lamda 函数在本地系统上执行文件
- python-3.x - Difference between these two algorithms
- amazon-web-services - AWS Athena JDBC PreparedStatement
- spring - Rest Template GET 列表和 testBuilder 方法问题 Spring
- spring - 如何使用 Spring JPA Repository 搜索带有撇号的字符串
- c# - 如何在初始化列表之前在查询中获取值
- apache-kafka - 用于数据库字段更新的 Kafka/Connect/Streams
- python - 使用 Python tesseract 从具有二维数组的图像中提取数字
- hyperledger-fabric - 我可以在交易中存储什么?