其他分享
首页 > 其他分享> > Stream流的常用方法forEach和filter

Stream流的常用方法forEach和filter

作者:互联网

Stream流的常用方法forEach

流模型的操作很丰富,这里介绍一些常用的API。这些方法可以被分成两种:

  延迟方法:返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用。(除了终结方法外,其余方法均为延迟方法。)

  终结方法:返回值类型不再是 Stream 接口自身类型的方法,因此不再支持类似StringBuilder那样的链式调用,终结方法包括count和forEach方法

void forEach(Consumer<? super T> action);

该方法接收一个Consumer接口函数,会将每一个流元素交给函数进行处理。
Consumer接口是一个消费型的函数式接口,可以传递Lambda表达式,消费数据。
简单记:
  forEach方法,用来遍历流中的数据;
  是一个终结方.法,遍历之后就不能继续调用Stream流中的其他方法。

 

    public static void main(String[] args) {
        //获取Stream流
        Stream<String> stream = Stream.of("张三", "李四", "王五", "赵六");
        //使用Stream流中的方法forEach对Stream流中的数据进行遍历
//        stream.forEach((String name)->{
//            System.out.println(name);
//        });
        //优化Lambda表达式
        stream.forEach(name-> System.out.println(name));
    }

 

 

 

 

 

 

 

 

Stream流的常用方法filter

用于对Stream流中的数据进行过滤,可以通过filter方法将一个流准换成另一个子集流;

Stream<T> filter(Predicate<? super T> predicate);

filter方法的参数Predicate是一个函数式接口,所以可以传递Lambda表达式,对数据进行过滤

Predicate中的抽象方法:
  boolean test(T t);

    public static void main(String[] args) {
        //创建一个Stream流
        Stream<String> stream = Stream.of("张无忌", "周芷若", "赵敏", "张强", "张三丰");
        //对Stream流中的元素进行过滤,只要姓张的
        Stream<String> stream1 = stream.filter((String name) -> {
            return name.startsWith("张");
        });
        //遍历Stream流
        stream1.forEach(name-> System.out.println(name));
    }

 

标签:name,Stream,流中,filter,forEach,方法
来源: https://www.cnblogs.com/xjw12345/p/16500748.html