List<String> strArr = Arrays.asList("1", "2", "3", "4");
strArr.stream().filter(str ->{
return "2".equals(str)?true:false;
}).forEach(str ->{
System.out.println(str);
});
以上代码,只会打印 2。
stream方法获取指向当前Collection对象的流对象,filter将对流中元素进行过滤,结合lambda表达式,需要在filter参数中实现一个类似于比较器的Predicate对象,返回一个boolean类型返回值,只有返回为true的Collection中的元素才会进入到forEach的循环中。
List<String> strArr = Arrays.asList("21", "22", "3", "4");
strArr.stream().filter(str ->{
return str.startsWith("2");
}).filter(str ->{
return str.equals("22");
}).forEach(str ->{
System.out.println(str);
});
filter可以多重添加,类似于原本forEach对每个元素进行if判断的逻辑。