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 包 ...
随机推荐
- Go语言入门篇-JSON&http调用
一.Decoder /(一)Decoder func DecoderExample(){ const jsonStream = ` { "Name" : "Ed" ...
- Angular5 自定义scrollbar样式之 ngx-perfect-scollbar
版本 angular 5.0 ngx-perfect-scrollbar ^5.3.5 为什么不用 ngx-perfect-scrollbar 最新的版本 v7 呢? 因为它报错啊!!! 每次init ...
- linux系统设置允许密码登录
编辑 /etc/ssh/sshd_config 文件 将PasswordAuthentication 的值改为 yes 然后重启ssh 服务 进入到 /etc/init.d 文件夹内 执行 ./s ...
- redis 主从、哨兵、集群
出处: redis主从复制和哨兵 Redis集群方式共有三种:主从模式,哨兵模式,cluster(集群)模式 一.Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步 ...
- O039、Unshelve Instance 操作详解
参考https://www.cnblogs.com/CloudMan6/p/5529915.html 上一节我们 shelve Instance 到 Glance,本节学习如何通过 unshelv ...
- vue开发后台管理系统有感
使用vue开发后台近一个月,今天终于完成得差不多了,期间也遇到很多的问题,所以利用现在的闲暇时间做个总结 使用element-ui基础,这次使用了vue-element-admin(github地址) ...
- prototype,__proto__,constructor理解
prototype: 任何函数(箭头函数除外)都具有一个 prototype属性,该属性是一个对象.一般情况下只有声明function的变量才会有(自动生成)prototype这个属性,而functi ...
- 一点css 基础
css 行内样式优先度最高 margin 属性 为声明外边距 如图 顺序依次为上右下左
- firefox(火狐中的兼容问题总结)
1.firefox 下 默认情况 <input type="number"> 只允许整数其他的都会报错,红色提示: 这时候可以添加参数 step="0.0 ...
- centos7 php7.3
./configure --prefix=/root/php/php-7.3.10/output \ --with-mhash \ --with-openssl \ --with-mysqli=sha ...