全空格字符串trim后存入ArrayList,如何判断列表无此类元素?
解决ArrayList中判断是否存在trim后为空元素的问题
嘿,这个场景我太熟悉了!你遇到的问题根源在于:虽然data.trim()得到的是空字符串,但它仍然是一个存在的元素,所以a.isEmpty()会返回false——毕竟列表里确实装了东西,哪怕是空字符串。
下面给你几个实用的解决方案,按需选择:
1. 检查列表中是否存在这类元素
如果你只是想确认列表里有没有trim后为空的元素,用Java 8+的Stream API最简洁:
// 如果存在trim后为空的元素,返回true boolean hasEmptyTrimmed = a.stream() .anyMatch(s -> s.trim().isEmpty()); // 所以判断"不存在这类元素"就是取反 boolean noEmptyTrimmed = !hasEmptyTrimmed;
这个方法不用修改原列表,单纯做检查,非常灵活。
2. 从源头避免添加这类元素
如果不想让这类元素进入列表,在add之前先做判断:
String data = " "; if (!data.trim().isEmpty()) { a.add(data.trim()); }
这样列表里只会保留trim后非空的元素,之后直接用a.isEmpty()就能判断是否有有效内容了。
3. 清理列表中已有的这类元素
如果列表已经有了这类元素,想把它们删掉再判断,可以用removeIf:
// 移除所有trim后为空的元素 a.removeIf(s -> s.trim().isEmpty()); // 现在isEmpty()就能正确返回是否有有效元素 boolean hasValidElements = !a.isEmpty();
内容的提问来源于stack exchange,提问作者Ice
相关产品推荐
相关产品推荐

