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,不修改原集合 - 示例:
Listcleaned = list.stream()
.filter(String::isBlank).negate()
.collect(Collectors.toList());
用 Apache Commons Lang(兼容老版本)
若项目已引入 commons-lang3,StringUtils.isNotBlank 更稳妥(对 null 友好,且兼容 Java 8):
- 需添加依赖:
org.apache.commons:commons-lang3 - 写法更直观:
.filter(StringUtils::isNotBlank) - 比
!str.isEmpty()或!str.trim().isEmpty()更健壮
手动遍历(不推荐,仅作理解)
避免用传统 for 循环边遍历边 remove(易漏删或抛 ConcurrentModificationException);如必须用迭代器:
立即学习“Java免费学习笔记(深入)”;
- 用
Iterator的remove()方法 - 或先收集待删索引,再倒序删除
- 但代码冗长、易错,不如 Stream 清晰
基本上就这些。优先选 String::isBlank(Java 11+)或 StringUtils.isNotBlank(老项目),一行搞定,语义明确,不易出错。










