有条件的Java List <t>添加Optional <t>

时间:2018-12-02 19:20:13

标签: java collections java-8 optional

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

void add(Optional<T> element)

会添加元素(如果存在)(如果是!element.isPresent(),则为空操作)?显然很容易实现,但是看起来似乎已经有人在做了。

2 个答案:

答案 0 :(得分:12)

您只需:

即可代替list.add(optio)
optio.ifPresent(list::add);

示例:

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 []

答案 1 :(得分:2)

  

很容易实现,但是看起来很明显   似乎有人可能已经做过了。

好吧,有时候显而易见的事情是因为简单而被忽略的事情。但是,由于标准选项旨在用作方法return types instead of method parameters,因此Java标准库中没有此功能,并且不久也不会看到它。

此外,“例如,如果可以使用此方法”,那么在进行简单操作(例如@azro建议)时,将需要另外add方法重载污染API。