stream流中filter的使用

stream是jdk1.8后的新特性,具体概念自己去百度吧,主要针对单列集合使用的,像list和set这种的,map不能直接使用,需要转换成单列集合。

不废话,直接上例子:

将list集合中的名字按要求筛选出来。

普通方法:

  public static void main(String[] args) {
        /**
         * 要求:筛选出list集合中姓张,且名字为三个字的元素
         * */
        List list = new ArrayList<>();
        list.add("张三丰");
        list.add("周芷若");
        list.add("张无忌");
        list.add("张三");
        list.add("金毛狮王");
        list.add("成昆");
        // 先找出姓张的
        List list1 = new ArrayList<>();
        for(String name:list){
            if (name.startsWith("张")){
                list1.add(name);
            }
        }
        System.out.println(list1);
        // 从姓张的里边筛选出名字长度为三个字的
        List list2 = new ArrayList<>();
        for(String name:list1){
            if (name.length()==3){
                list2.add(name);
            }
        }
        System.out.println(list2);
    }

输出结果:

[张三丰, 张无忌, 张三]
[张三丰, 张无忌]

使用stream中的filter方法:

  public static void main(String[] args) {
        /**
         * 要求:筛选出list集合中姓张,且名字为三个字的元素
         * */
        List list = new ArrayList<>();
        list.add("张三丰");
        list.add("周芷若");
        list.add("张无忌");
        list.add("张三");
        list.add("金毛狮王");
        list.add("成昆");

        list.stream().filter(name ->name.startsWith("张")) // 过滤出姓“张”的 
                .filter(name ->name.length()==3) // 过滤出名字是三个字的
                .forEach(name -> System.out.println(name)); // foreach遍历输出。

结果:

D:\JAVA\JDK-11\bin\java.exe "-javaagent:D:\idea\IntelliJ IDEA 
张三丰
张无忌

Process finished with exit code 0

你可能感兴趣的:(笔记,java,开发语言)