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

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

    原文作者:三思_1234
    原文地址: https://blog.csdn.net/qq_35625303/article/details/80406496
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞