如何检查如果一个列表的属性是null使用适当的方法?



我有以下方法在我的Java应用程序:

private void save(final CopyRequest request) {
if (request.getName() != null) {
// stuff
}
}

我通过将方法参数转换为List<CopyRequest>来更新此方法,如下所示:

private void save(final List<CopyRequest> requestList) {
if (requestList.getName() != null) {
// stuff
}
}

那么,我应该通过requestList.stream().forEach(request -> request.getName == null)或类似的东西检查name属性是否为空吗?

方法取决于您实际想要执行的操作。

第一个选项是-当且仅当每个项目都有名称(全部或无)时保存列表。

boolean allWithName = requestList.stream()
.map(CopyRequest::getName)
.allMatch(Objects::nonNull);
if(allWithName){
// do stuff
}

第二个选项-保存每个有名称的项目(选择性保存)

requestList.stream()
.filter(request -> request.getName() != null) // (1)
.forEach(this::save); // Note: it is overloaded version for single request

实际上,您甚至可以省略(1)的过滤,因为重载版本已经执行检查

您可以使用Stream#allMatch

if(requestList != null 
&& requestList.stream().allMatch(request -> request != null 
&& request.getName() != null)){
}

使用过滤器进行null检查,

if(requestList != null 
&& requestList.stream()
.filter(Objects:nonNull)
.allMatch(request -> request.getName() != null)) {
// code here
}

相关内容

最新更新