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 包 ...
随机推荐
- js单击事件
<script type="text/javascript"> // 根据ID获取元素,得到按钮[注册] var elbtn=document.getElementBy ...
- 利用pycharm 安装tushare(转) + dir(ts)
1.在pycharm里,有安装组件的方法,进入 File - Setting - Project:StockMarket - Project InterPreter,在右边点击“+”,进入搜索页面,搜 ...
- Flash中的SLC/MLC/MLC--基础
参考 1.http://www.upantool.com/jiaocheng/qita/2012/slc_mlc_tlc.html 2.http://www.2ic.cn/html/10/t-4324 ...
- Vue学习之vue-cli脚手架下载安装及配置
Vue学习之vue-cli脚手架下载安装及配置:https://www.cnblogs.com/clschao/articles/10650862.html 1. 先下载node.js,下载地址:ht ...
- django初步了解4
django单表查询 必知必会13条 1.all() 查询所有 QuerySet res=models.Book.objects.all()#惰性查询 print(res) for i in res: ...
- Adaboost推导
AdaBoost算法推导过程: https://www.jianshu.com/p/0d850d85dcbd
- paramiko-ssh-秘钥认证实例
import paramiko private_key = paramiko.RSAKey.from_private_key_file('id_rsa.txt') #创建ssh对象 ssh =para ...
- springMVC 接受map参数的写法
<form > <input type="hidden" name="map['userKey']" value="11111&qu ...
- CTF 常见操作总结
一般流程 首先看header, veiwsource, 目录扫描 有登陆, 尝试sql注入&爆破 有数据库, 必然sql注入? 普通sql注入 判断是否存在回显异常 尝试单双引号 查是字符型? ...
- c语言测试芯片好坏
问题描述有n个(2<n<20)芯片,好的或坏的,并且有比坏的芯片更多的已知的好的芯片.每个芯片都可以用来测试其他芯片.当用一个好的芯片测试其他芯片时,它可以正确地给出被测芯片是好是坏.当用 ...