简体   繁体   English

Java 8 - 流,过滤和可选

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM