如何使用正确的方法检查列表的属性是否为空?

问题描述 投票:0回答:3

我的 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 属性是否为空吗?

java spring list java-stream
3个回答
2
投票

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

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

  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)
省略过滤,因为重载版本已经执行了检查


1
投票

您可以使用

Stream#allMatch

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

}

1
投票

使用 filter 进行空检查,

略有变化,
if(requestList != null 
    && requestList.stream()
       .filter(Objects:nonNull)
       .allMatch(request -> request.getName() != null)) {
   // code here
}
© www.soinside.com 2019 - 2024. All rights reserved.