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

浪子不回头ぞ 提交于 2019-12-09 05:27:26
        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判断的逻辑。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!