[英]Java 8 - Stream, filter and optional
I have the following code 我有以下代码
public Player findPlayerByUsername(String username) {
return players.stream().filter(p -> p.getUsername().equalsIgnoreCase(username))
.findFirst().get();
}
The problem is, I want it to return null
if no value is present, how would I go amongst doing that? 问题是,如果没有值,我希望它返回null
,我将如何进行呢? Because as it stands, that just throws a NoSuchElementException
. 因为它代表,只是抛出NoSuchElementException
。
public Player findPlayerByUsername(final String username) {
return players.stream().filter(p -> p.getUsername().equalsIgnoreCase(username)).findFirst().orElse(null);
}
The findFirst()
method returns an Optional<Player>
. findFirst()
方法返回一个Optional<Player>
。
If optional has player object, optional.get()
will return that object. 如果optional具有player对象,则optional.get()
将返回该对象。 If object doesn't exist and you want some alternative, give that option in 如果对象不存在而您想要一些替代方法,请提供该选项
.orElse(new Player()); or .orElse(null)
For more details see Optional Documentation and Optional tutorial 有关详细信息,请参阅可选文档和可选教程
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.