JDK8相关:Collection类stream()+filter()+forEach()方法的联合使用

        List 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 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判断的逻辑。

你可能感兴趣的:(杂七杂八,备忘)