终结操作和中间操作的区别:中间操作返回的一直都是stream,所以可以一直使用,但是终结操作返回的不是stream,后面不能继续操作

foreach:对流中的所有元素进行遍历操作

count:获取当前流内元素的个数//这个是无参的

max&min:这个也是需要比较器的,具体写法和sort差不多,但是返回值是Optional

collect(Collectors.toList()):把当前的流转换成集合

  collect(Collectors.toMap(a->a.getKey,a->a.getValue))  //转换成map

查找和匹配:1.anyMatch | allMatch | noneMatch,返回类型是boolean,只要有符合的就会返回true,需要一个判断条件函数做参

      2.findAny | findFirst 无参数传入,获取流中的一个元素,any没法保证获取的一定是流中的第一个元素(有随机性)

reduce归并:对流中的数据按照指定的计算方式计算出结果(缩减操作)

reduce(初始值,(结果,遍历元素)->(对结果与遍历元素进行操作))

两个元素

使用提供的标识值和关联累积函数对此流的元素执行缩减,并返回缩减值。这相当于:
int result = identity; for (int element : this stream) result = accumulator.applyAsInt(result, element) return result;
但不受顺序执行的约束。
该 identity 值必须是累加器函数的标识。这意味着对于所有人来说 x, accumulator.apply(identity, x) 都是平等 x的。该 accumulator 函数必须是 关联 函数。
这是一个 终端操作。
参数:
identity – 累加函数的恒等值 op– 用于组合两个值的关联、非干扰、无状态函数
返回:
减少的结果

一个元素(通过文档可知,这里就是把要遍历的第一个元素设置为结果)

使用关联累积函数对此流的元素执行缩减,并返回OptionalInt描述缩减值(如果有)。这相当于:
boolean foundAny = false;
int result = null;
for (int element : this stream) {
if (!foundAny) {
foundAny = true;
result = element;
}
else
result = accumulator.applyAsInt(result, element);
}
return foundAny ? OptionalInt.of(result) : OptionalInt.empty();
但不受顺序执行的约束。
该 accumulator 函数必须是 关联 函数。
这是一个 终端操作。
参数:
op– 用于组合两个值的关联、非干扰、无状态函数
返回:
减少的结果

stream总结:

1.惰性求值(如果只有中间操作没有终结操作所有操作都不会进行)

2.流是一次性的(流使用完之后就会报废,不可以重复使用)

3.不会影响原数据(正常情况下stream操作不会对原数据产生修改)

写一下学习中遇到的一些有趣的问题

        int[] arr = {1, 2, 3, 4, 5, 6};
int reduce = Arrays.stream(arr).reduce(0, (int1, int2) -> int1<int2?int1:int2);
int reduce1 = Arrays.stream(arr).reduce(0, (int1, int2) -> Math.min(int1, int2));
int reduce2 = Arrays.stream(arr).reduce(0, Math::min)

我根据idea的提示从0->1->2一步一步简写判断语句

Intger类有里就有最值

        int minValue = Integer.MIN_VALUE;
int maxValue = Integer.MAX_VALUE;

写写stream流的终结操作的更多相关文章

  1. Java8 Stream流API常用操作

    Java版本现在已经发布到JDK13了,目前公司还是用的JDK8,还是有必要了解一些JDK8的新特性的,例如优雅判空的Optional类,操作集合的Stream流,函数式编程等等;这里就按操作例举一些 ...

  2. Stream流的这些操作,你得知道,对你工作有很大帮助

    Stream流 Stream(流)是一个来自数据源的元素队列并支持聚合操作: 元素是特定类型的对象,形成一个队列. Java中的Stream并不会存储元素,而 是按需计算. 数据源 流的来源. 可以是 ...

  3. 【JDK8】Java8 Stream流API常用操作

    Java版本现在已经发布到JDK13了,目前公司还是用的JDK8,还是有必要了解一些JDK8的新特性的,例如优雅判空的Optional类,操作集合的Stream流,函数式编程等等;这里就按操作例举一些 ...

  4. 总算给女盆友讲明白了,如何使用stream流的filter()操作

    一.引言 在上一篇文章中<这么简单,还不会使用java8 stream流的map()方法吗?>分享了使用stream的map()方法,不知道小伙伴还有印象吗,先来回顾下要点,map()方法 ...

  5. java中Optional和Stream流的部分操作

    package test9; import java.util.DoubleSummaryStatistics; import java.util.Optional; import java.util ...

  6. Java 基础-IO、stream 流、文件操作

    输入输出流的分类 在 java.io 包中,包含了输入输出操作所需的类. I/O 流可以安装不同的标准分类: 按照流的方向分类: 输入流:将信息从代码外部输入代码 输出流:将代码得到的数据输出到文件. ...

  7. 还看不懂同事的代码?超强的 Stream 流操作姿势还不学习一下

    Java 8 新特性系列文章索引. Jdk14都要出了,还不能使用 Optional优雅的处理空指针? Jdk14 都要出了,Jdk8 的时间处理姿势还不了解一下? 还看不懂同事的代码?Lambda ...

  8. 超强的Lambda Stream流操作

    原文:https://www.cnblogs.com/niumoo/p/11880172.html 在使用 Stream 流操作之前你应该先了解 Lambda 相关知识,如果还不了解,可以参考之前文章 ...

  9. java8 新特性Stream流的应用

    作为一个合格的程序员,如何让代码更简洁明了,提升编码速度尼. 今天跟着我一起来学习下java 8  stream 流的应用吧. 废话不多说,直入正题. 考虑以下业务场景,有四个人员信息,我们需要根据性 ...

  10. 30.Stream流

    5.Stream流 5.1体验Stream流[理解] 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集 ...

随机推荐

  1. C#调用微软api文本转语音

    目录 1.注册微软云服务,搭建文本转语音标准应用(每月500万字免费好像) 2.Visual studio使用nuget给程序安装Microsoft.CognitiveServices.Speech框 ...

  2. 13个优秀的AI工具软件导航网站推荐

    人工智能(AI)是现在科技领域的热门话题,它不仅改变了我们的生活方式,也催生了许多创新的工具和应用.AI工具可以帮助我们完成各种任务,如绘画.编程.视频制作.语音合成等,让我们的工作和娱乐更加高效和有 ...

  3. yum源的基本知识

    一.yum源配置 1.本地yum源配置内容 [local]#仓库名称,自定义,担具有唯一性 '唯一性是说在yum.repos.d这个文件夹中只能有一个这个名字的yum仓库' name=local_ce ...

  4. UML建模工具Astah Pro 8破解教程2022最新最详细版

    (2022最新最详细版)UML建模工具Astah Pro 8破解教程 本文作者严正声明:拒绝盗版行为,打击盗版,痛恨吃白食的家伙,我一直都是坚定思想,有钱了一定要支持正版,所以此文档贡献,只为学习交流 ...

  5. Spark-submit常用任务命令参数和说明

    Spark常用任务命令参数和说明 spark-submit \ --name task2018072711591669 \ --master yarn --deploy-mode client \ - ...

  6. GIS数据获取:气象数据免费下载网站

      本文对目前主要的气象数据获取网站加以整理与介绍.   本文为"GIS数据获取整理"专栏中第二篇独立博客,因此本文全部标题均由"2"开头.本文对目前主要的气象 ...

  7. xshell+ssh+网络+加密

    使用xshell+ssh用于管理linux服务器,大概是目前最为流行的方式. 这个工具和技术涉及到: 计算机网络 加密解密 虽然不是专门的系统工程师,但还是相对频繁使用这套工具,有时候难免遇到一些不知 ...

  8. 创建docker

    创建docker 准备实验环境 1. 安装前准备 Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可. 1.1 查看当前的内核版本 uname -r 1.2 使用 root ...

  9. python基础-数据容器的通用操作

    五种数据容器的特性   列表list[]  元组tuple()  字符串str""   集合set{}   字典dict{key:value} 元素数量 支持多个 支持多个 支持多 ...

  10. LAMP-CentOS7搭建Web服务器

    搭建LAMP Web服务器 在家中翻到了以前用的老电脑,在思索一番后,决定把这台电脑改造成一台Web服务器,作为我自己搭建博客的测试机器. 一.Linux服务器 LAMP中的L指的是Linux服务器, ...