ToB企服应用市场:ToB评测及商务社交产业平台

标题: Java Stream流 [打印本页]

作者: 勿忘初心做自己    时间: 2024-6-4 23:56
标题: Java Stream流
Stream流

Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处置惩罚数据。
结合Lambda表达式来完成某种功能的实现
Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 聚集运算和表达的高阶抽象。
Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。
这种风格将要处置惩罚的元素聚集看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处置惩罚, 比如筛选, 排序,聚合等。
元素流在管道中颠末中间操纵(intermediate operation)的处置惩罚,最后由终极操纵(terminal operation)得到前面处置惩罚的效果。
  1. +--------------------+       +------+   +------+   +---+   +-------+
  2. | stream of elements +-----> |filter+-> |sorted+-> |map+-> |collect|
  3. +--------------------+       +------+   +------+   +---+   +-------+
复制代码
以上流程转化为Java代码为:
  1. List<Integer> transactionsIds =
  2. widgets.stream()
  3.              .filter(b -> b.getColor() == RED)
  4.              .sorted((x,y) -> x.getWeight() - y.getWeight())
  5.              .mapToInt(Widget::getWeight)
  6.              .sum();
复制代码
什么是Stream?

Stream(流)是一个来自数据源的元素队列并支持聚合操纵
和从前的Collection操纵不同, Stream操纵还有两个基础的特征:
生成流

在 Java 8 中, 聚集接口有两个方法来生成流:
举个例子
  1. List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
  2. List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
复制代码

方法

Stream()

生成流
forEach()


void forEach(Consumer




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4