您的位置:首页 > 编程语言 > Java开发

使用java 8新增Stream操作集合

2018-04-17 13:31 134 查看

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

独立使用Stream的步骤:

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

        Stream提供了大量的方法进行聚集操作,这些方法既可以是中间的,也可以是末端的

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

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

Stream常用的中间方法:

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

常用的末端方法:

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

转载于:https://my.oschina.net/u/1258870/blog/1796696

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: