sce*_*aph 5 java optional java-stream
例如,我们有一个带有一些字段的简单类.我们假设,我们有名为'name'和'id'的字段.我想获取具有指定id的对象的名称,如果没有这样的对象,则返回一些defaultName:
private List<MyObject> myObjects;
public String findFieldById(int id) {
MyObject matchingObj = myObjects.stream()
.filter(m -> m.getId() == id)
.findFirst().orElse(null);
return (matchingObj == null) ? "defaultName" : matchingObj.getName();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在一行中轻松地对流中的 null进行检查?
您可以在一个管道通过映射来执行这种类型的操作MyObject::getName之后findFirst,否则通过提供一个默认值orElse.
return myObjects.stream()
.filter(m -> m.getId() == id)
.findFirst()
.map(MyObject::getName)
.orElse("defaultName");
Run Code Online (Sandbox Code Playgroud)