当前位置: 首页 > news >正文

Java8 IfPresent 与 forEach 的组合操作

一、需求背景

      Java8的Optional接口是我们经常使用的一个接口,尤其是对对象进行判空的时候,需要经常使用到IfPresent()
      但是,如果是对List进行判空、循环的话,就稍显繁杂了,因为几乎每次对List进行操作的时候,都需要先进行IfPresent,然后再调用forEach();那么,能否自己写一个方法,将这两结合起来呢?,其实也不难,大致实现如下:

二、具体实现

      具体实现步骤、调用方法如下:

  1. 具体实现
/*** 如果List的IfPresent判断通过,就调用forEach循环* @param optionalList  待操作的list* @param action forEach操作* @param <T> 消费者对象*/public static <T> void forEachIfPresent(Optional<List<T>> optionalList, Consumer<T> action) {optionalList.ifPresent(items -> items.forEach(action));} 
  1. 调用
 public static void main(String[] args) {Optional<List<String>> optionalList = Optional.ofNullable(Arrays.asList("A", "B", "C"));List<String> list = new ArrayList<>();// 原始的ifPresent、forEach调用System.out.println("-------------------原始调用操作结果-------------------");optionalList.ifPresent(items -> {items.forEach(item -> {System.out.println(item);list.add(item);});});System.out.println(list);list.clear();// 调用自定义方法实现ifPresent以及forEach循环操作System.out.println("-------------------原始自定义增强方法操作结果-------------------");forEachIfPresent(optionalList,item->{System.out.println(item);list.add(item);});System.out.println(list);}
  1. 输出结果
-------------------原始调用操作结果-------------------
A
B
C
[A, B, C]
-------------------原始自定义增强方法操作结果-------------------
A
B
C
[A, B, C]

可以看到,通过上述组合以后,简化了ifPresentforEach调用的步骤,并且与原始的调用方法无二.

http://www.lryc.cn/news/260964.html

相关文章:

  • WebGL+Three.js入门与实战——给画布换颜色、绘制一个点、三维坐标系
  • SystemServer 进程启动过程
  • Java EE 多线程之 JUC
  • Unity光照模型实践
  • 从0创建并部署一个网页到服务器
  • Ubuntu 22.04 安装 OCI CLI
  • K8S的安装工具
  • vue中哪些数组的方法可以做到响应式
  • 软考科目如何选择?
  • 羊大师解读,血压波动
  • 关于充值!购买的流量卡第一次在哪充值?这个问题你想过吗?
  • HTML基础标签
  • 人大金仓引领医疗行业新标准
  • 【UML】NO.1 UML简介
  • 【Idea】SpringBoot项目中,jar包引用冲突异常的排查 / SM2算法中使用bcprov-jdk15to18的报错冲突问题
  • MISRA C++ 2023:C和C++测试解决方案实现静态分析
  • 半导体:Gem/Secs基本协议库的开发(4)
  • 解锁知识的新大门:自建知识付费小程序的技术指南
  • Java8实战 - 行为参数化传递代码
  • jmeter,取“临时重定向的登录接口”响应头中的cookie
  • 流程控制之条件判断
  • 2 - Electron 核心概念
  • Cmake找不到mysql.h和libmysqlclient.so
  • 图论——二分图
  • 国产浪潮服务器:风扇免手动调节脚本
  • 智能科技企业网站搭建的作用是什么
  • 【多组学数据驱动的机器学习:生物医学研究的创新与突破】
  • AI影响谷歌正在推出新的人工智能模型,用于医疗保健。以下是医生如何使用它们的介绍
  • 云仓酒庄带您品法国葡萄酒
  • XIAO ESP32S3之实现口罩检测