流过滤器返回 null findFirst 出现异常

Alv*_*vin 0 java filtering java-stream

personList如果为空或过滤结果为空,以下将抛出异常:

Person b2cInwardAllocTxs = personList.stream()
   .filter(x -> x.getName().equalsIgnoreCase("Alvin"))
   .findFirst().get();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Exception: java.util.NoSuchElementException: No value present
Run Code Online (Sandbox Code Playgroud)

如何解决错误?

实际上,我只是希望它应该返回一个对象或null.

Mur*_*nik 5

get如果在空的 上调用将抛出异常Optional。相反,您可以使用orElse返回null:

Person b2cInwardAllocTxs = 
    personList.stream()
              .filter(x -> x.getName().equalsIgnoreCase("Alvin"))
              .findFirst()
              .orElse(null);
Run Code Online (Sandbox Code Playgroud)