ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Java8 IfPresent 与 forEach 的组合操作

2026/8/4 9:29:11 拓冰建站 浏览量
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调用的步骤,并且与原始的调用方法无二.