在Java中如何过滤掉空字符串集合_List清洗方法说明

Java中过滤空字符串集合应优先使用Stream配合String::isBlank(Java 11+)或StringUtils.isNotBlank(Apache Commons),二者均null安全、语义明确、一行实现,避免手动遍历引发异常。

在Java中过滤掉空字符串集合,核心是遍历并剔除 null、空串("")或仅含空白字符的字符串(如 " ")。推荐使用 Stream 配合 String::isBlank(Java 11+)或 StringUtils.isNotBlank(Apache Commons),简洁安全。

用 Stream + isBlank(Java 11及以上)

这是最现代、无依赖的写法,自动跳过 null 和空白字符串:

  • isBlank() 内部已处理 null 安全,无需额外判空
  • 保留原始顺序,返回新 List,不修改原集合
  • 示例:
      List cleaned = list.stream()

        .filter(String::isBlank).negate()
        .collect(Collectors.toList());

用 Apache Commons Lang(兼容老版本)

若项目已引入 commons-lang3StringUtils.isNotBlank 更稳妥(对 null 友好,且兼容 Java 8):

  • 需添加依赖:org.apache.commons:commons-lang3
  • 写法更直观:.filter(StringUtils::isNotBlank)
  • !str.isEmpty()!str.trim().isEmpty() 更健壮

手动遍历(不推荐,仅作理解)

避免用传统 for 循环边遍历边 remove(易漏删或抛 ConcurrentModificationException);如必须用迭代器:

  • Iteratorremove() 方法
  • 或先收集待删索引,再倒序删除
  • 但代码冗长、易错,不如 Stream 清晰

基本上就这些。优先选 String::isBlank(Java 11+)或 StringUtils.isNotBlank(老项目),一行搞定,语义明确,不易出错。