java8 Optional使用 stream filter多级过滤

package com.example.core.mydemo.java8;

public class MyModel {
private String couponCode;
private Integer orderType;
private String orderNo;
private String frameNo;
private Integer couponStatus = 0; //默认 public Integer getCouponStatus() {
return couponStatus;
} public void setCouponStatus(Integer couponStatus) {
this.couponStatus = couponStatus;
} public String getOrderNo() {
return orderNo;
} public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
} public String getFrameNo() {
return frameNo;
} public void setFrameNo(String frameNo) {
this.frameNo = frameNo;
} public String getCouponCode() {
return couponCode;
} public void setCouponCode(String couponCode) {
this.couponCode = couponCode;
} public Integer getOrderType() {
return orderType;
} public void setOrderType(Integer orderType) {
this.orderType = orderType;
}
} package com.example.core.mydemo.java8; import java.util.ArrayList;
import java.util.List;
import java.util.Optional; public class ListTest {
public static void main(String[] args) { List<MyModel> list = new ArrayList();
MyModel model = new MyModel();
model.setCouponCode("111111");
model.setCouponStatus(1);
model.setOrderType(1);
list.add(model); model = new MyModel();
model.setCouponCode("22222");
model.setCouponStatus(0);
model.setOrderType(2);
list.add(model); int orderType = 1; Optional<MyModel> optional = Optional.ofNullable(list).orElseGet(ArrayList::new).stream().filter(x -> x.getOrderType() == orderType).filter(x ->x.getCouponStatus() == 0).findFirst();
MyModel model3 = optional.orElse(null);
if(model3 != null) {
String couponId = model3.getCouponCode();
//关联订单号
System.out.println("couponId="+couponId);
}else{
System.out.println("未找到未使用的记录");
}
}
}

java8 Optional使用 stream filter多级过滤的更多相关文章

  1. Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

    内容简介 本文主要说明在Java8及以上版本中,使用stream().filter()来过滤一个List对象,查找符合条件的对象集合. List对象类(StudentInfo) public clas ...

  2. Java8 新特性 Stream Api 之集合遍历

    前言 随着java版本的不断更新迭代,java开发也可以变得甜甜的,最新版本都到java11了,但是后面版本也是不在提供商用支持,需要收费,但是java8 依然是持续免费更新使用的,后面版本也更新很快 ...

  3. django-admin 仿写stark组件action,filter筛选过滤,search查询

    写在StandLi里面的方法都是通过ModelSubject这个类里面的stand_li方法,在它里面用StandLi这个类实例化出来一个对象,这个实例化出来的对象把数据传给前端HTML模板进行渲染, ...

  4. java8新特性——stream笔记

    stream对象 Stream IntStream LongStream DoubleStream 创建 常用的三种方式: 使用list对象: list.stream() − 为集合创建串行流. li ...

  5. java8中的stream().filter()的使用和Optional()

    转: https://www.cnblogs.com/yimiyan/p/5992440.html Optional: https://www.cnblogs.com/zhangboyu/p/7580 ...

  6. java8:(Lambda 表达式,Supplier,@FunctionalInterface,foreach(),Optional,Stream().collect,双冒号,joining,partitioningBy分区,collectingAndThen,filter())

    1.Lambda 表达式: 引导:http://www.cnblogs.com/yulinfeng/p/8452379.html DEMO1: List<String> names1 = ...

  7. Java8新特性代码示例(附注释)- 方法引用,Optional, Stream

    /** * java8中的函数式接口,java中规定:函数式接口必须只有一个抽象方法,可以有多个非抽象方法,同时,如果继承实现了 * Object中的方法,那么也是合法的 * <p> * ...

  8. java8 stream ,filter 等功能代替for循环

    直接上代码,比较实在. 对象A public Class A{ private Long id; private String userName; ..... ....省略get和set方法 } 在L ...

  9. java8 新特性 Stream流 分组 排序 过滤 多条件去重

    private static List<User> list = new ArrayList<User>(); public static void main(String[] ...

  10. java8新特性——Stream API

    Java8中有两大最为重要得改变,其一时Lambda表达式,另外就是 Stream API了.在前面几篇中简单学习了Lambda表达式得语法,以及函数式接口.本文就来简单学习一下Stream API( ...

随机推荐

  1. Quick BI产品核心功能大图(四):Quick引擎加速--十亿数据亚秒级分析

    ​简介: 随着数字化进程的深入,数据应用的价值被越来越多的企业所重视.基于数据进行决策分析是应用价值体现的重要场景,不同行业和体量的公司广泛依赖BI产品制作报表.仪表板和数据门户,以此进行决策分析. ...

  2. CPU静默数据错误:存储系统数据不丢不错的设计思考

    简介: 对于数据存储系统来说,保障数据不丢不错是底线,也是数据存储系统最难的部分.据统计,丢失数据中心10天的企业,93%会在1年内破产.那么如果想要做到数据不丢不错,我们可以采取怎样的措施呢? 作者 ...

  3. 【ESSD技术解读-04】ESSD Auto PL规格,引领IO性能弹性新方向

    ​简介: 阿里云 ESSD 为云服务器 ECS 提供低时延.持久性和高可靠的块存储服务,成为云厂商全闪块存储的业界标杆.存储团队推出了 ESSD Auto PL 新的云盘规格,把性能与容量解耦,提供 ...

  4. [Linux] IP 地址配置, 网络地址配置文件

    # 查看与配置网络状态命令 $ ifconfig # 临时设置 eth0 网卡的 IP 地址与子网掩码,netmask 可以省略 $ ifconfig eth0 192.168.0.100 netma ...

  5. [ML] 工程师使用 Keras 的步骤指引

    设置 import numpy as np import tensorflow as tf from tensorflow import keras 介绍 在训练模型之前准备数据(将其转换为 NumP ...

  6. 2018-2-13-win10-uwp-自定义控件-SplitViewItem

    title author date CreateTime categories win10 uwp 自定义控件 SplitViewItem lindexi 2018-2-13 17:23:3 +080 ...

  7. SpringMVC学习二(日期参数/数据保存/重定向)

    接受的参数为日期类型 controller进行数据保存 Controller如何进行重定向跳转 1.对于前端页面传来日期类型的数据时如何进行处理,有两种方法 1.1在对应的Controller中插入代 ...

  8. S/4 HANA 中的 Email Template

    电子邮件是非常常见的业务需求. SAP 了解这一点,并在 S/4 HANA(cloud和on premise)中引入了非常有趣的功能--Email Template.它将CDS视图和HTML模板结合了 ...

  9. Git:如何撤销已经提交的代码

    日常操作流程 本地工作区(尚未暂存) ---> add . 到暂存区 ---> commit 到本地仓库 ---> pull拉取关联远程仓库分支合并到本地的分支---> pus ...

  10. SpringBoot-mybatis-plus 分页

    前言: 想必数据分页对于每一个程序员并不陌生,针对分页查询功能代码实现上:肯定是代码简洁明了且能达到分页的效果会更好! 现在我将基于SpringBoot - mybatisPlus分页查询的方法总结如 ...