如何为可选列表的每个元素消费?

Jin*_*won 2 java lambda java-stream

我有一个可以为空的列表;

List<T> list; // may or may not null
Run Code Online (Sandbox Code Playgroud)

我想与消费者一起处理每个元素。

到目前为止,我做到了。

ofNullable(list)
        .map(List::stream)
        .ifPresent(stream -> stream.forEach(e -> {}));
Run Code Online (Sandbox Code Playgroud)

或者

ofNullable(eventDataList).ifPresent(v -> v.forEach(e -> {}));
Run Code Online (Sandbox Code Playgroud)

有没有简单或简洁的方法来做到这一点?

yel*_*ver 5

为了避免丑陋的空检查,使用 orElse(Collections.emptyList())

Optional.ofNullable(eventDataList)
        .orElse(Collections.emptyList())
        .forEach(e -> {});
Run Code Online (Sandbox Code Playgroud)

使用静态导入,它非常简洁:

ofNullable(eventDataList).orElse(emptyList()).forEach(e -> {});
Run Code Online (Sandbox Code Playgroud)