备忘记录

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记录的更多相关文章

  1. java List递归排序,传统方式和java8 Stream优化递归,无序的列表按照父级关系进行排序(两种排序类型)

    当有一个List列表是无序的,List中的数据有parentid进行关联,通过java排序成两种排序类型: 所用的测试列表最顶级无parentid,若为特殊值,修改下判断方法即可. 第一种排序:按照树 ...

  2. Java8 Stream性能如何及评测工具推荐

    作为技术人员,学习新知识是基本功课.有些知识是不得不学,有些知识是学了之后如虎添翼,Java8的Stream就是兼具两者的知识.不学看不懂,学了写起代码来如虎添翼. 在上篇<Java8 Stre ...

  3. 【转】Java8 Stream 流详解

      当我第一次阅读 Java8 中的 Stream API 时,说实话,我非常困惑,因为它的名字听起来与 Java I0 框架中的 InputStream 和 OutputStream 非常类似.但是 ...

  4. Java8 Stream流

    第三章 Stream流 <Java8 Stream编码实战>的代码全部在https://github.com/yu-linfeng/BlogRepositories/tree/master ...

  5. android gps开发必备资料(含测试demo下载)

    入门资料参考: How accurate is Android GPS? Part 1: Understanding Location Data How accurate is Android GPS ...

  6. 简洁又快速地处理集合——Java8 Stream(下)

    上一篇文章我讲解 Stream 流的基本原理,以及它与集合的区别关系,讲了那么多抽象的,本篇文章我们开始实战,讲解流的各个方法以及各种操作 没有看过上篇文章的可以先点击进去学习一下 简洁又快速地处理集 ...

  7. Java8 Stream新特性详解及实战

    Java8 Stream新特性详解及实战 背景介绍 在阅读Spring Boot源代码时,发现Java 8的新特性已经被广泛使用,如果再不学习Java8的新特性并灵活应用,你可能真的要out了.为此, ...

  8. Java8 Stream 的最佳实践

    Java8 Stream 的最佳实践 java8stream提供了对于集合类的流失处理,其具有以下特点: Lazy Evaluation(长度可以无限) 只能使用一次 内部迭代 Lazy Evalua ...

  9. Java8之Optional类

    写在前头 今天再看阿里的Java开发手册,里面异常处理第10条提到这样一个建议. [推荐]防止 NPE ,是程序员的基本修养,注意 NPE 产生的场景:1 ) 返回类型为基本数据类型,return 包 ...

随机推荐

  1. 第八周课程总结&实验报告(六)

    第八周课程总结 启动多线程售票(上课老师说要加入作业的部分) public class TestDemo { public static void main(StringD args) throws ...

  2. vlan端口类型

    交换机三种链路类型:access.trunk.hybrid. access类型只属于一个VLAN,一般用于连接计算机端口. trunk类型可以允许多个vlan通过,可以接收和发送多个vlan的报文,一 ...

  3. 【Python】【demo实验11】【练习实例】【三个整数的立方和】

    目的:找到 除了9n±4型自然数外,所有100以内的自然数都能写成三个整数的立方和    这每个数的表达方式: 源代码: #!/usr/bin/python # encoding=utf-8 # -* ...

  4. 【转帖】Office的光荣历史(2)

    Office的光荣历史(2) https://www.sohu.com/a/201411215_657550 2017-10-31 10:57 7.MS Office 2000 (Office 9.0 ...

  5. kettle转换设置变量,校验输出新变量

    背景:有很多小的转换需要串联起来,如果前一个执行成功,后面继续接着执行,如果执行等待中,就让程序等一会再次获取数据分析,如果失败就中止,成功就进行下一个转换,以此类推.... 需求:通过job把参数传 ...

  6. Spring5的总体架构图

    Spring5的主体架构图 主要是四大部分:Web.Data Access/Integration.Core Container.中间层,具体见下图:

  7. HTML accessKey约定俗成的标准

    accessKey属性提供了键盘快捷键 例: <a href="index.html" accessKey="1">Home</a> 这 ...

  8. linux下安装anconda3

    Liunx下安装anconda3其实特变简单,只需这几步骤 1.  首先要到网上下载一个ancoda3的安装包.然后在上传到linux上面即可 3. 是不是特别简单呢?哈哈

  9. MySQL的简介、启动及其DDL

    MySQL的各项配置: 默认会启用TCP/IP网络: 默认客户端/服务器端口:3306: 将数据库的BIN目录写入Windows的的path环境变量: 默认不允许root用户在其他机器上远程登录: M ...

  10. string库

    Lua字符串库小集 1. 基础字符串函数: 字符串库中有一些函数非常简单,如: 1). string.len(s) 返回字符串s的长度: 2). string.rep(s,n) 返回字符串s重复n次的 ...