Java 可选。如果存在(如果不存在怎么办)

Java 可选。如果存在(如果不存在怎么办),java,Java,我正在尝试基于方法返回的选项构建流 我的问题是:有没有一种方法可以构建一个流,在获得一些可选的流并在另一种情况下以一种好的方式执行另一个流的情况下,该流会分裂?不使用if-else开关我想你想要的是Orelse: 以下返回6: Optional.of(5).map(value -> value + 1) .orElseGet(() -> 1); 这将返回1: Optional.<Integer>empty().map(value ->

我正在尝试基于方法返回的选项构建流


我的问题是:有没有一种方法可以构建一个流,在获得一些可选的流并在另一种情况下以一种好的方式执行另一个流的情况下,该流会分裂?不使用if-else开关

我想你想要的是Orelse:

以下返回6:

Optional.of(5).map(value -> value + 1)
              .orElseGet(() -> 1);
这将返回1:

Optional.<Integer>empty().map(value -> value + 1)
                         .orElseGet(() -> 1)

OrelGet是一家供应商,因此只要返回一个值,您就可以在其中执行任意代码。

您能给出一个具体的示例,说明您正在尝试做什么吗?您的意思是代替选项吗?请记住,Java 8中的改进并不是要取代以前更明智的方法,而是要增加它们。用更复杂的方式取代简单的if或for等,仅仅使用streams/optionals/etc是个坏主意。仅仅因为我们得到了一些函数式的乐趣并不能使Java成为一种很好的函数式语言。我举了一个例子,这不是答案。OP询问在optional具有非null值时执行任意代码,在optional具有null值时执行不同的任意代码。在您的情况下,虽然可以在那里添加任意代码,但您必须返回OP不关心的值。这个值应该是多少?真的可以是任何东西。