java8 stream/optional个人测试demo记录
备忘记录
package cc.ash; import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors; public class StreamTest { public static void main(String[] args) { ArrayList<Stu> stus = new ArrayList<>();
Stu a = new Stu("name-A", 17, 64, "A");
Stu b = new Stu("name-B", 20, 58, "B");
Stu c = new Stu("name-C", 27, 60, "C");
Stu d = new Stu("name-D", 24, 56, "D"); stus.add(a);
stus.add(b);
stus.add(c);
stus.add(d); // streamOpt(stus);
stus.add(null);
optionalHandleClct(stus);
optionalHandle(null);
} public static void streamOpt(List<Stu> stuList) { stuList.stream()
.filter(s -> s.getAge() > 19)
.peek(o -> System.out.println(o.getName()))
.sorted((x, y) -> x.getWeight() - y.getWeight())//.mapToInt(Stu::getWeight).sum();
.peek(o -> System.out.println(o.getName()))
.map(Stu::getAlias)
.peek(System.out::println)
.collect(Collectors.toList()); stuList.stream()
.filter(o -> o.getWeight() > 45 && o.getWeight() < 61)
// .sorted((x, y) -> x.getWeight() - y.getWeight())
//默认升序、反转降序。体重相同在根据年龄排序
.sorted(Comparator.comparing(Stu::getWeight).reversed().thenComparing(Stu::getAge))
.forEach(per -> System.out.println(per.getName())); } public static int optionalHandle(Stu stu) {
return Optional.ofNullable(stu).map(Stu::getAge).orElse(-1);
// return stu == null ? -1 : stu.getAge(); //等价
// if(stu == null) {
// System.out.println("无信息,日志输出,异常处理");
// return -1;
// }
// return stu.getAge();
}
public static void optionalHandleClct(List<Stu> stu) { int sum = stu.stream().mapToInt(o -> Optional.ofNullable(o).map(Stu::getAge).orElse(-1)).sum();
System.out.println(sum); }
} @AllArgsConstructor
@NoArgsConstructor
@Data
class Stu {
private String name;
private int age;
private int weight;
private String alias;
}
stream
https://blog.csdn.net/qq_20989105/article/details/81234175
lambda
https://www.jianshu.com/p/8d7f98116693
java8 stream/optional个人测试demo记录的更多相关文章
- java List递归排序,传统方式和java8 Stream优化递归,无序的列表按照父级关系进行排序(两种排序类型)
当有一个List列表是无序的,List中的数据有parentid进行关联,通过java排序成两种排序类型: 所用的测试列表最顶级无parentid,若为特殊值,修改下判断方法即可. 第一种排序:按照树 ...
- Java8 Stream性能如何及评测工具推荐
作为技术人员,学习新知识是基本功课.有些知识是不得不学,有些知识是学了之后如虎添翼,Java8的Stream就是兼具两者的知识.不学看不懂,学了写起代码来如虎添翼. 在上篇<Java8 Stre ...
- 【转】Java8 Stream 流详解
当我第一次阅读 Java8 中的 Stream API 时,说实话,我非常困惑,因为它的名字听起来与 Java I0 框架中的 InputStream 和 OutputStream 非常类似.但是 ...
- Java8 Stream流
第三章 Stream流 <Java8 Stream编码实战>的代码全部在https://github.com/yu-linfeng/BlogRepositories/tree/master ...
- android gps开发必备资料(含测试demo下载)
入门资料参考: How accurate is Android GPS? Part 1: Understanding Location Data How accurate is Android GPS ...
- 简洁又快速地处理集合——Java8 Stream(下)
上一篇文章我讲解 Stream 流的基本原理,以及它与集合的区别关系,讲了那么多抽象的,本篇文章我们开始实战,讲解流的各个方法以及各种操作 没有看过上篇文章的可以先点击进去学习一下 简洁又快速地处理集 ...
- Java8 Stream新特性详解及实战
Java8 Stream新特性详解及实战 背景介绍 在阅读Spring Boot源代码时,发现Java 8的新特性已经被广泛使用,如果再不学习Java8的新特性并灵活应用,你可能真的要out了.为此, ...
- Java8 Stream 的最佳实践
Java8 Stream 的最佳实践 java8stream提供了对于集合类的流失处理,其具有以下特点: Lazy Evaluation(长度可以无限) 只能使用一次 内部迭代 Lazy Evalua ...
- Java8之Optional类
写在前头 今天再看阿里的Java开发手册,里面异常处理第10条提到这样一个建议. [推荐]防止 NPE ,是程序员的基本修养,注意 NPE 产生的场景:1 ) 返回类型为基本数据类型,return 包 ...
随机推荐
- Hibernate使用中防止SQL注入的几种方案
Hibernate使用中防止SQL注入的几种方案 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数 ...
- 【Abode Air程序开发】移动设备、桌面和浏览器应用程序开发的差异
移动设备.桌面和浏览器应用程序开发的差异 在移动设备应用程序中使用 Spark 和 MX 组件的限制 移动设备应用程序在性能方面的注意事项 浏览器 将应用程序部署为 SWF 文件,以用于在浏览器中运 ...
- MNFTL: An Efficient Flash Translation Layer for MLC
1. we propose two approaches, namely, concentrated mapping and postponed reclamation, to effective r ...
- 手把手教你用vue-clic3搭建vue-element-admin项目
下载element-admin框架 点击该地址:https://github.com/PanJiaChen/vue-element-admin 用git clone https://github.co ...
- [转帖]什么是BSS/OSS,及区别和联系
什么是BSS/OSS,及区别和联系 https://blog.csdn.net/jionghan3855/article/details/3856873 BSS:Business support sy ...
- 使用批处理执行 sql cmd
当 sql脚本文件太大了, 就可以考虑用这个方式来执行 1.准备好要执行的 sql脚本文件并保存为*.sql格式 2.找到 SQLCMD.EXE 文件所在的路径(每个版本sql路径不一样) C:\Pr ...
- Mysql创建、使用循环函数
创建函数 create procedure names() begin declare i int default 0; while i < 3000 do INSERT INTO studen ...
- Web安全小结之后端
- H. The Nth Item(The 2019 Asia Nanchang First Round Online Programming Contest)
题意:https://nanti.jisuanke.com/t/41355 给出N1,计算公式:A=F(N)Ni=Ni-1 ^ (A*A),F为类斐波那契需要矩阵快速幂的递推式. 求第k个N. 思路: ...
- 数值优化(Numerical Optimization)学习系列-无梯度优化(Derivative-Free Optimization)
数值优化(Numerical Optimization)学习系列-无梯度优化(Derivative-Free Optimization) 2015年12月27日 18:51:19 下一步 阅读数 43 ...