gpt4 book ai didi

java - 如果不匹配,从 ArrayList 流式传输返回 null 错误

转载 作者:行者123 更新时间:2023-11-30 06:42:59 24 4
gpt4 key购买 nike

我有一个按钮,当点击它时,循环遍历 ArrayList<User>并尝试匹配 emailText对象的文本 getEmail() .

btnLogin = new JButton("Login");
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
User declaredUser = App.getUsers().stream()
.filter(o -> o.getEmail().equalsIgnoreCase(emailText.getText())).findFirst().get());

当电子邮件确实存在且 .get() 时它工作正常返回 declaredUser .但是,当没有匹配项时,我会收到此错误:

Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException: No value present

我试过添加 != null像这样:

User declaredUser;
if ((declaredUser = App.getUsers().stream()
.filter(o -> o.getEmail().equalsIgnoreCase(emailText.getText())).findFirst().get()) != null) {
// Code here ...
}

但是,我仍然收到此错误。任何人都可以指出我正确的方向以首先检查 findFirst()返回一个值?谢谢

最佳答案

如您所见,Optional#get抛出 NoSuchElementException如果Optional<T>是空的;出于这个原因,我根本不建议调用它,尤其是因为您不知道 Optional<T> 是否存在。是否为空。

因为 Stream#findFirst返回 Optional<T> , 你可以使用 Optional#ifPresent仅在 Optional<T> 时继续执行为空:

App.getUsers()
.stream()
.filter(o -> o.getEmail().equalsIgnoreCase(emailText.getText()))
.findFirst()
.ifPresent(declaredUser -> {
// declaredUser is in scope here!
});

关于java - 如果不匹配,从 ArrayList 流式传输返回 null 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52570330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com