【发布时间】:2017-08-23 18:37:23
【问题描述】:
鉴于以下代码,我希望输出为“-3-2-101231”,因为过滤器应该遍历流的所有项目,从而打印正在评估的项目。当 allMatch 函数被评估时,它应该打印“1”,因为它正在接收一个正整数流,所以它应该在发现第一个元素不是负数后短路。
为什么打印的是“-3-2-1011”而不是“-3-2-101231”?
List<Integer> list = Arrays.asList(-3,-2,-1,0,1,2,3);
Predicate<Integer> positive = i->{
System.out.print(i);
return i>0;
};
Predicate<Integer> negative = i->{
System.out.print(i);
return i<0;
};
list.stream().filter(positive).allMatch(negative);
【问题讨论】:
-
你想用这个实现什么 -
list.stream().filter(positive).allMatch(negative);?从您的问题来看,您似乎期望输出为“-3-2-101231”,这与给定列表中的所有值相同。明确的要求是什么?
标签: java filter java-8 java-stream predicate