使用java 8新增Stream操做集合

Java8新增了Steam、IntStream、LongStream、DoubleStream,同时提供了对应的Builder,例如Stream.Builder、IntSteam.Builder、LongStream.Builder、DoubleStream.Builer数组

独立使用Stream的步骤:app

  1. 使用Stream或XxxStreamAPI的builder()类方法建立该Stream对应的Builder
  2. 重复使用Builder的add()方法向该流中添加多个元素
  3. 调用Builder的build()方法获取对应的Stream
  4. 调用Stream的汇集方法

        Stream提供了大量的方法进行汇集操做,这些方法既能够是中间的,也能够是末端的ui

中间方法:中间方法容许流保持打开的状态,并容许直接调用后续的方法,中间方法的返回值是另一个流。调试

末端方法:末端方法是对流的最终的操做。当某个流执行末端方法后,改流将会消耗且再也不可用排序

Stream经常使用的中间方法:it

  • filter(Predicate predicate):过滤Steam中全部不符合predicate的元素。
  • mapToXxx(ToXxxFunction mapper):使用ToXxxFunction对流中的元素执行一对一的转换,该方法返回的新流包含了ToXxxFunction转换后的全部的元素。
  • peek(Consumer action): 以次对每一个元素执行一些操做,该方法返回流与原有流包含相同的元素。该方法主要用于调试。
  • distinct():该方法用于排序流中全部的重复的元素(判断元素重复的标准是使用equal()方法返回true)。这是一个有状态的方法。
  • sorted():该方法用于保证流中的元素在后续的访问中处于有序的状态。这是一个有状态的方法。
  • limit(long maxSize):该方法用于保证流中的后续访问中最大的容许访问元素的个数。这是一个有状态的、短路的方法。

经常使用的末端方法:io

  • forEach(Consumer action):遍历流中的全部元素,对每一个元素执行action。
  • toArray():将流中的全部的元素转换为一个数组。
  • reduce():该方法有三个重载的版本,都是用于经过某种操做来合并流中的元素
  • min():返回流中全部元素的最小值
  • max():返回六中全部元素的最大值
  • count():返回流中全部元素的个数.
  • anyMatch(Predicate predicate) :判断流中是否至少包含一个元素符合Predicate条件
  • allMatch(Predicate predicate): 判断流中是否每一个元素都符合Predicate条件
  • noneMatch(Predicate predicate):判断流中是否全部元素都不符合Predicate条件
  • findFirst():返回流中的第一个元素.
  • findAny():返回流中的任意一个元素.
相关文章
相关标签/搜索