使用java 8新增Stream操作集合
2018-04-17 13:31
134 查看
Java8新增了Steam、IntStream、LongStream、DoubleStream,同时提供了对应的Builder,例如Stream.Builder、IntSteam.Builder、LongStream.Builder、DoubleStream.Builer
独立使用Stream的步骤:
- 使用Stream或XxxStreamAPI的builder()类方法创建该Stream对应的Builder
- 重复使用Builder的add()方法向该流中添加多个元素
- 调用Builder的build()方法获取对应的Stream
- 调用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
相关文章推荐
- 使用Java8新增的Predicate操作集合
- 使用Java 8新增的Predicate操作来操作集合
- Java_集合操作_非稳定排序推荐使用List
- Java新增的Predicate操作集合
- Java IO操作——打印流(PrintStream、PrintWriter)的使用
- JAVA8 使用谓词(Predicate)操作集合
- Java8_Stream对集合的操作
- java使用lambda表达式对List集合进行操作(JDK1.8)
- java 并发操作list集合导致java.util.ConcurrentModificationException 使用迭代器
- 巧用Java8中的Stream,让集合操作飞起来!
- 巧用Java8中的Stream,让集合操作飞起来!
- 如何使用Java操作LDAP之新增条目(三)
- Java1.8新特性关于lambda表达式与Stream流的使用以及对集合的实用操作
- Java_集合操作_集合运算时使用更优雅的方式
- JAVA 8 的Stream API操作,别再使用if-else循环了,
- java使用lambda表达式对List集合进行操作(JDK1.8)
- java8新特性(1)-基于stream集合分组(包含stream对集合常用操作的功能)
- [Java]“语法糖”系列(三)之集合流操作(Stream)[笔记]
- Java_集合操作_使用细节
- Java 8 - Stream 集合操作快速上手