Java 8 Stream的神操作

3,059 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

Java8对集合提供了一种流式计算的方式,这种风格将要处理的元素集合看 作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如 筛选, 排序,聚合等。

Stream API 基本都是返回Stream本身,这样多个操作可以串联成一个管 道, 如同流式风格(fluent style)。 这样做可以对操作进行优化, 比 如延迟执行(laziness)和短路( short-circuiting)

image.png

image.png

image.png

  • stream() 为集合创建串行流
  • parallelStream() 为集合创建并行流
private void createStream(){
    Stream<Integer> stream = getList().stream();
    Stream<Integer> parallelStream = getList().parallelStream();
}

stream提供了一个内部遍历的方式forEach(),通过forEach可以大大简化集 合遍历的代码。

private void forEach(){
    getList().forEach(i->System.out.println(i));
}

stream提供了一个用于数据过滤的方法filter(),与stream的其他API配合 使用可以简单的实现数据过滤。

stream提供了一个用于数据映射的方法map(),与stream的其他API配合使用 可以简单的实现数据映射。

stream提供了一个用于数据映射的方法sorted(),与stream的其他API配合 使用可以简单的实现数据排序。

Collectors 类实现了很多归约操作,例如将流转换成集合和聚合元素。 Collectors 可用于返回列表或字符串。

一些产生统计结果的收集器也非常有用。它们主要用于int、double、long 等基本类型上,它们可以用来产生类似如下的统计结果。