我有一些对象列表。这些对象中有一些字段和其他内容随着时间的推移而变化。我希望列表中的某些元素具有等于true
的值。我拿这个对象,我想在其他地方使用它。
当列表中没有包含该元素的对象时,我得到一个异常,我的应用程序崩溃了。所以我使用一个非常奇怪的代码来避免这种情况,我想知道,如果有更简单,更好的东西。
public class CustomObject{
private String name;
private boolean booleanValue;
//Getters and setters...
}
//Somewhere else I have the list of objects.
List<CustomObject> customList = new ArrayList<>();
//Now... here I am using this strange piece of code I want to know how to change.
if (customList.stream().filter(CustomObject::getBooleanValue).findAny().isPresent()) {
customList.stream().filter(CustomObject::getBooleanValue).findAny().get().... //some custom stuff here.
}
正如你所看到的,我在这里做了非常丑陋的代码:调用两次相同的方法。 我试过像
这样的东西CustomObject customObject = customList.stream().filter.....
并检查该对象是否为空,但它没有按照我想要的那样做。
答案 0 :(得分:8)
如果确实如此,您可以使用ifPresent
删除isPresent
和get
:
customList.stream()
.filter(CustomObject::getBooleanValue)
.findAny()
.ifPresent(customObject -> { /* do something here */ });
如果findAny()
找到了值,则会调用指定的使用者,否则不会发生任何事情。