Java 8 - 流,过滤和可选

时间:2016-02-07 03:56:00

标签: java java-8 java-stream optional

我有以下代码

public Player findPlayerByUsername(String username) {
    return players.stream().filter(p -> p.getUsername().equalsIgnoreCase(username))
                  .findFirst().get();
}

问题是,如果没有值,我希望它返回null,我将如何进行此操作?因为就目前而言,只会引发NoSuchElementException

1 个答案:

答案 0 :(得分:11)

public Player findPlayerByUsername(final String username) {
   return players.stream().filter(p -> p.getUsername().equalsIgnoreCase(username)).findFirst().orElse(null);
}

findFirst()方法返回Optional<Player>

如果optional有player对象,optional.get()将返回该对象。如果对象不存在而您想要一些替代方法,请在

中提供该选项
.orElse(new Player()); or .orElse(null) 

有关详细信息,请参阅Optional DocumentationOptional tutorial