【发布时间】:2019-08-29 06:26:45
【问题描述】:
我想用"||" 分割一个字符串,并计算结果数组中有多少元素返回true 用于函数boolean isValid(String[] r)。
我正在尝试使用Arrays.stream 来评估和过滤数组,最后过滤结果数组以仅保留真实值。
boolean[] truthSet = Arrays.stream(range.split("\\s+))
.map(r -> isValid(r))
.filter(b -> _whatGoesHere_)
.toArray(boolean[]::new);
代替_whatGoesHere,我尝试使用b、b == true,但无济于事。实现这一目标的正确方法是什么?
【问题讨论】:
-
“无济于事” - 为什么?结果如何?
-
@SharonBenAsher 好吧,我可能会过早地假设,但我的 IDE 认为它是“lambda 表达式中的错误返回类型。对象无法转换为布尔值”
-
错误不是由
b -> b引起的。你应该阅读它。并张贴。它与尝试从Stream<java.lang.Boolean>(objects) 创建一个boolean(primitive types) 数组有关。无论如何,创建一个只有真值的数组有什么意义?流的大小不会传达相同的信息吗? (即有 N 个有效字符串)? -
不需要
map元素;你可以直接使用filter:Arrays.stream(...).filter(str -> isValid(str)).count()。
标签: java arrays regex java-8 java-stream