【发布时间】:2020-01-07 13:25:16
【问题描述】:
我正在尝试根据条件过滤列表。是否有其他方法可以中断我可以用来停止过滤的 java 8 流?
举个例子:假设我有以下列表。
List<String> list = Arrays.asList("Foo","Food" ,"Fine","Far","Bar","Ford","Flower","Fire");
list.stream()
.filter(str -> str.startsWith("F")) //break when str doesn't start with F
.collect(Collectors.toList());
我想要所有以“F”开头的字符串,一旦找到不以“F”开头的字符串,我想停止过滤。如果没有流,我会执行以下操作:
List<String> result = new ArrayList<>();
for(String s : list){
if(s.startsWith("F")){
result.add(s);
}
else{
break;
}
}
如何在流中使用“break”?
【问题讨论】:
-
你可以使用 Java 9+ 吗?如果是这样,请参阅
Stream#takeWhile(Predicate)。 -
@Slaw 我还不知道这个功能。我可能已经尝试了一个小时。非常感谢,takeWhile 正是我所需要的。
标签: java lambda java-8 java-stream break