Stream流

Stream流

Stream流中的一些方法

1. 获取Stream流

  • java.util.stream.Stream< T >是Java 8新加入的最常用的流接口。(这并不是一个函数式接口)
  • 获取一个流非常简单,有以下几种常用方式:
    • 所有的Collection集合都可以通过stream默认方法获取流:
      • default Stream<E> stream​();
    • Stream接口的静态方法of可以获取数组对应的流:
      • static <T> Stream<T> of​(T... values);
      • 参数是一个可变参数,可以传递一个数组

2. Stream流中计数

  • Stream流中的常用方法count:用于统计Stream流中元素的个数。
    • long count();
  • 是一个终结方法,返回值是long类型,所以不能调用Stream类型中其他方法。

3. Stream流中过滤

  • Stream中的常用方法filter:用于对Stream流中的数据进行过滤。
  • Stream<T> filter​(Predicate<? super T> predicate) ;
  • 参数是一个Predicate接口,是一个函数式接口,可以传递lambda表达式,对数据进行过滤。

4. Stream流中遍历

  • Stream中两种方法:

    • 延迟方法:方法的返回值仍然是Stream类型,可以继续调用Stream中的方法。
    • 终结方法:方法的返回值不再是Stream类型,不能再调用Stream中的方法。
  • Stream中的常用方法forEach

  • void forEach​(Consumer<? super T> action) :该方法接收一个Consumer接口函数,会将每一个流元素交给函数进行处理。

  • Consumer接口是一个消费型的函数式接口,可以传递lambda表达式消费数据。

  • 简单记:

    • 用来遍历流中的数据,是一个终结方法,b遍历之后就不能再继续调用Stream流中的其他方法。

5. Stream流中截取

  • Stream流中的常用方法limit:用于截取流中的元素。
  • limit方法可以对流进行截取,只取用前n个。
  • Stream<T> limit​(long maxSize);
    • 参数是一个long类型,如果集合当前长度大于截取长度则进行截取(一个截取完以后的新的流),否则不进行操作(一个元素和之前一模一样的新的流)。

6. Stream流中的映射转化

  • 如果需要将流中的元素映射到另一个流中,可以使用map方法。
  • <R> Stream<R> map​(Function<? super T,? extends R> mapper) ;
  • 该接口需要一个Function函数式接口参数,可以将当前l流中的T类型数据转换为另一种类型的R类型数据。

7. Stream流中跳过元素

  • Stream流中的常用方法skip:用于跳过元素。
  • 如果希望跳过前几个元素,可以使用skip方法获取一个截取之后的新流。
  • Stream<T> skip​(long n) ;
    • 如果流的当前长度大于n,则跳过前n个,否则将会得到一个长度为0的空流。

8. Stream流将流组合

  • Stream流中的常用方法concat:用于把流组合到一起。
  • 如果有两个流,希望合并为一个流,那么可以使用Stream接口的静态方法concat。
  • static <T> Stream<T> concat​(Stream<? extends T> a, Stream<? extends T> b)
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信