java8 Optional使用 stream filter多级过滤
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多级过滤的更多相关文章
- Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)
内容简介 本文主要说明在Java8及以上版本中,使用stream().filter()来过滤一个List对象,查找符合条件的对象集合. List对象类(StudentInfo) public clas ...
- Java8 新特性 Stream Api 之集合遍历
前言 随着java版本的不断更新迭代,java开发也可以变得甜甜的,最新版本都到java11了,但是后面版本也是不在提供商用支持,需要收费,但是java8 依然是持续免费更新使用的,后面版本也更新很快 ...
- django-admin 仿写stark组件action,filter筛选过滤,search查询
写在StandLi里面的方法都是通过ModelSubject这个类里面的stand_li方法,在它里面用StandLi这个类实例化出来一个对象,这个实例化出来的对象把数据传给前端HTML模板进行渲染, ...
- java8新特性——stream笔记
stream对象 Stream IntStream LongStream DoubleStream 创建 常用的三种方式: 使用list对象: list.stream() − 为集合创建串行流. li ...
- java8中的stream().filter()的使用和Optional()
转: https://www.cnblogs.com/yimiyan/p/5992440.html Optional: https://www.cnblogs.com/zhangboyu/p/7580 ...
- 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 = ...
- Java8新特性代码示例(附注释)- 方法引用,Optional, Stream
/** * java8中的函数式接口,java中规定:函数式接口必须只有一个抽象方法,可以有多个非抽象方法,同时,如果继承实现了 * Object中的方法,那么也是合法的 * <p> * ...
- java8 stream ,filter 等功能代替for循环
直接上代码,比较实在. 对象A public Class A{ private Long id; private String userName; ..... ....省略get和set方法 } 在L ...
- java8 新特性 Stream流 分组 排序 过滤 多条件去重
private static List<User> list = new ArrayList<User>(); public static void main(String[] ...
- java8新特性——Stream API
Java8中有两大最为重要得改变,其一时Lambda表达式,另外就是 Stream API了.在前面几篇中简单学习了Lambda表达式得语法,以及函数式接口.本文就来简单学习一下Stream API( ...
随机推荐
- 阿里千万实例可观测采集器-iLogtail正式开源
简介:11月23日,阿里正式开源可观测数据采集器iLogtail.作为阿里内部可观测数据采集的基础设施,iLogtail承载了阿里巴巴集团.蚂蚁的日志.监控.Trace.事件等多种可观测数据的采集工 ...
- [GPT] gradio-chatbot 原理及代码解析
GradioChatBot 是一个基于 Gradio 的聊天机器人,它可以与不同的 URL 进行对话.其原理是通过将用户输入的文本发送到指定的 URL,然后接收并解析 URL 返回的响应,然后将响 ...
- [Docker] 使 Volume 独立于容器运行时的方式 - 让容器引擎去处理
在单纯使用 run 命令运行一个容器时,通常会使用 -v 挂载的方式来实现宿主机数据卷映射到容器内. 使用命令: $ docker run --name mysql-con -v /my/custom ...
- dotnet 在析构函数调用 ThreadLocal 也许会抛出对方已释放
我在不自量力做一个数组池,就是为了减少使用 System.Buffers.dll 程序集,然而在数组池里面,所用的 ThreadLocal 类型,在我对象析构函数进行归还数组时,抛出了无法访问已释放对 ...
- 如何在 Linux 上部署 RabbitMQ
如何在 Linux 上部署 RabbitMQ 目录 如何在 Linux 上部署 RabbitMQ 安装 Erlang 从预构建的二进制包安装 从源代码编译 Erlang RabbitMQ 的安装 使用 ...
- VSCode 打开ESP32工程问题
一.无法跳转 问题现象: 打开ESP32工程头文件提示波浪线不跳转,如下图所示: 解决办法: 删除工程中.vsccode文件夹下的所有文件 VSCode 中打开命令行搜索 ESP-IDF 找到`添加 ...
- vue项目(cli-3)替换浏览器logo
思路: 根html文件的 <link rel="icon" href="<%= BASE_URL %>favicon.ico">是引入i ...
- 一键自动化博客发布工具,用过的人都说好(segmentfault篇)
segmentfault是我在这些平台中看过界面最为简洁的博客平台了. 今天就以segmentfault为例,讲讲在blog-auto-publishing-tools中的实现原理. 前提条件 前提条 ...
- 特工17Agent17汉化版游戏破解金币方法修改破解金币的增加方法
又是一个renpy游戏,昨晚搞了半个小时搞定的,其实这个游戏要赚钱也不难,就是点点点就可以了,但是我觉得还是挺费劲的,因为好多道具都很贵,攒钱又不怎么容易,花钱的地方还挺多的,所以干脆不如直接破解了算 ...
- vue路由跳转的三种方式
目录 1.router-link [实现跳转最简单的方法] 2.this.$router.push({ path:'/user'}) 3.this.$router.replace{path:'/' } ...