Java List <T>有条件地添加Optional <T>

ger*_*rdw 6 java collections optional java-8

是否有一个库(例如Apache,Guava)提供了List<T>一个方法

void add(Optional<T> element)
Run Code Online (Sandbox Code Playgroud)

如果元素存在,则添加元素(如果是,则为无操作!element.isPresent())?显然很容易实现,但似乎有人可能已经做过这样一个显而易见的事情.

azr*_*zro 13

而不是list.add(optio)你只需要:

optio.ifPresent(list::add);
Run Code Online (Sandbox Code Playgroud)

示例:

Optional<Integer> optio = Optional.ofNullable(Math.random() > 0.5 ? 52 : null);
List<Integer> list = new ArrayList<>();

optio.ifPresent(list::add);
System.out.println(list);                 //50% of [52], 50% of []
Run Code Online (Sandbox Code Playgroud)

  • 我个人认为这比`CollectionUtil.add(list,optio)`更易读.+1 (5认同)