java中Optional和Stream流的部分操作
package test9; import java.util.DoubleSummaryStatistics;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream; public class StreamTest {
public static void main(String[] args) {
Optional<Integer> optional = Optional.of(123); System.out.println("创建一个Optional对象的方式一:" + optional.get()); Optional<Integer> optional2 = Optional.ofNullable(null);
System.out.println("Optional操作:对象是否为空:" + !optional2.isPresent()); Optional<Double> result = Optional.of(4.0).flatMap(StreamTest::squareRoot).flatMap(StreamTest::inverse);
System.out.println("Optional操作:flatMap可以循环调用其中的方法,4.0的平方根处以2是:" + result.get()); String str = Stream.of("一", "二", "三", "四", "五", "六").collect(Collectors.joining(","));// joining参数可为空,即结果中将没有","
System.out.println("流操作:将此流中的所有元素组合成一条字符串返回:\t" + str); DoubleSummaryStatistics summary = Stream.of(12, 10, 54, 8, 132, 589, 4)
.collect(Collectors.summarizingDouble(Integer::intValue));
System.out.println("流操作:最大值:" + summary.getMax() + "\t最小值:" + summary.getMin() + "\t平均值:" + summary.getAverage()
+ "\t总和:" + summary.getSum() + "\t元素的个数:" + summary.getCount());
} // 计算平方根
private static Optional<Double> squareRoot(Double x) {
return x < 0 ? Optional.empty() : Optional.of(Math.sqrt(x));
} private static Optional<Double> inverse(Double x) {
return x == 0 ? Optional.empty() : Optional.of(x / 2);
} }
打印结果:
创建一个Optional对象的方式一:123
Optional操作:对象是否为空:true
Optional操作:flatMap可以循环调用其中的方法,4.0的平方根处以2是:1.0
流操作:将此流中的所有元素组合成一条字符串返回: 一,二,三,四,五,六
流操作:最大值:589.0 最小值:4.0 平均值:115.57142857142857 总和:809.0 元素的个数:7
java中Optional和Stream流的部分操作的更多相关文章
- JAVA中的I/O流以及文件操作
一 JAVA语言中主要通过流来完成IO操作. 流:计算机的输入输出之间流动的数据序列,也是类的对象.java中的流方式就像是建立在数据交换源和目的之间的一条通信路径. 数据源:计算机中的数据源是指可以 ...
- Java 基础-IO、stream 流、文件操作
输入输出流的分类 在 java.io 包中,包含了输入输出操作所需的类. I/O 流可以安装不同的标准分类: 按照流的方向分类: 输入流:将信息从代码外部输入代码 输出流:将代码得到的数据输出到文件. ...
- Java中Optional类的使用
从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都 ...
- Java使用Optional与Stream来取代if判空逻辑(JDK8以上)
Java使用Optional与Stream来取代if判空逻辑(JDK8以上) 通过本文你可以用非常简短的代码替代业务逻辑中的判null校验,并且很容易的在出现空指针的时候进行打日志或其他操作. 注:如 ...
- Java中list如何利用遍历进行删除操作
转: Java中list如何利用遍历进行删除操作 2018年03月31日 10:23:41 Little White_007 阅读数:3874 Java三种遍历如何进行list的便利删除: 1.f ...
- java中对对象进行判空的操作--简洁编码
java中对对象进行判空的操作 首先来看一下工具StringUtils的判断方法: 一种是org.apache.commons.lang3包下的: 另一种是org.springframework.ut ...
- 再来看看Java的新特性——Stream流
半年前开始试着使用Java的新特性,给我印象最深的就是Stream流和Optional.其中Stream提高了看法效率,让代码看起来十分清爽. 为什么要使用流? 摘要中已经说明了,为了提高开发效率.流 ...
- Java中的文件和流相关知识
1. File File类可以使用文件路径字符串来创建File实例,该文件路径可以是绝对路径或相对路径 File类的list()方法中可以接收一个FilenameFilter参数,通过该参数可以只列出 ...
- Java提升四:Stream流
1.Stream流的定义 Stream是Java中的一个接口.它的作用类似于迭代器,但其功能比迭代器强大,主要用于对数组和集合的操作. Stream中的流式思想:每一步只操作,不存储. 2.Strea ...
随机推荐
- First non-repeating character in a stream
First non-repeating character in a stream Given an input stream of n characters consisting only of s ...
- Qt ------ QTableView QTableWidget
QTableView model提供数据 view提供视图 view用来显示model的数据 必须将model绑定到某个view中才能显示 QStandardItemModel* mod ...
- Python 堆与堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先讲解下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是完全二叉树或者是近似完全二叉树. 二叉堆满足 ...
- Mask-RCNN数据集制作
转自https://blog.csdn.net/pingushen2100/article/details/80513043 一.Mask-RCNN数据集 1.1 训练Mask-RCNN用的到的文件有 ...
- Ubantu里面的Sublime Text3不支持中文的解决办法
参考的大佬链接:https://github.com/lyfeyaj/sublime-text-imfix 更新然后将系统升级到最新版本,在linux终端输入 sudo apt-get update ...
- C语言复习---杨辉三角打印
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <math ...
- Solr记录-solr检索和查询数据
Solr检索数据 在本章中,我们将讨论如何使用Java Client API检索数据.假设有一个名为sample.csv的.csv文档,其中包含以下内容. 001,9848022337,Hyderab ...
- Sublime Text 2 绿化与汉化 [Windows篇]
其实 ST3 已经出了很久了,可是我这个人恋旧,一直钟爱 ST2,所以就选择她了.最近我的 ST2 越来越卡,甚至有时候输入都会延迟1秒,所以打算自己搞个绿化版. 打开 Sublime Text 官网 ...
- [R语言]关联规则2---考虑items之间严格的时序关系
前面介绍了关联规则1---不考虑用户购买的items之间的时序关系,但在一些情况下用户购买item是有严格的次序关系了,比如在某些休闲游戏中,用户购买了道具A才能购买道具B,且道具A和B只能购买一次, ...
- Struts2不扫描jar包中的action
今天在做一个二开的项目,将struts打成jar包放在WEB-INF的目录下却扫描不到指定的路径,也就是http访问访问不到我们指定的action,其他代码可以正常使用,就是访问不到action.st ...