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 包 ...
随机推荐
- vue2.0 子组件props接受父组件传递的值,能不能修改的问题整理
父组件代码: <!-- --> <template> <div class=''> <el-link type="danger">传 ...
- mongo fork
logpath=../log/mongodb.log logappend=false dbpath=/hejing/data/db fork=true
- 使用jackson序列化json时遇到的坑
公司使用Springboot进行开发,里面默认使用了jackson进行序列化. 但是序列化的过程中一直报错,因此记录一下. ⒈jackson默认大小写敏感,且首字母转小写 在类上添加一下注解即可 @J ...
- linux常用终端命令(一)终端命令格式(二)文件和目录常用命令
一.linux终端命令格式 1.终端命令格式 command [-options] [parameter] 说明: command :命令名,相应功能的英文单词或单词的缩写 [-options] ...
- laravel框架之自帶登錄&註冊
//控制器層 <?php namespace App\Http\Controllers\admin; use App\Models\admin\Users; use Illuminate\Htt ...
- sysbench测试
什么是基准测试 数据库的基准测试是对数据库的性能指标进行定量的.可复现的.可对比的测试. 基准测试与压力测试 基准测试可以理解为针对系统的一种压力测试.但基准测试不关心业务逻辑,更加简单.直接.易于测 ...
- T100错误信息提示方式
例如: IF g_browser_cnt = THEN INITIALIZE g_errparam TO NULL LET g_errparam.extend = "" LET g ...
- go 表单
package main import ( "fmt" "io" "net/http" ) const form = `<html&g ...
- Wannafly挑战赛24
A. 石子游戏 Alice和Bob在玩游戏,他们面前有n堆石子,对于这些石子他们可以轮流进行一些操作,不能进行下去的人则输掉这局游戏.可以进行两种操作:1. 把石子数为奇数的一堆石子分为两堆正整数个石 ...
- Tomcat 的部署器
要使用一个Web应用程序,必须要将表示该应用程序的Context实例部署到一个Host实例中,在Tomcat中,Context实例可以用WAR文件的形式来部署,也可以将整个WEB应用程序复制到Tomc ...