我有一个ArrayList和一个只包含空格的字符串:
ArrayList<String> a = new ArrayList<String>();
String data=" ";
a.add(data.trim())
a.isEmpty()
返回false。
如何检查a没有像数据这样的元素?
答案 0 :(得分:2)
data.trim()
会为您返回一个空的String
(即""
)。
因此,您的列表a
包含一个空的String
。
因此a.isEmpty()
返回false。
答案 1 :(得分:1)
从数据字符串中删除所有空格。字符串将添加到字符串的ArrayList中,因此a.isEmpty()将返回false。
a.add(data.trim()); <---- A empty string is added to your ArrayList
答案 2 :(得分:1)
如何检查a没有元素?
if (myList.isEmpty()){...}
会这样做。那你真正做了什么。
但你想要的是检查一个列表没有空元素。这是另一回事
没有List
子类提供诸如行为,因为它是功能特异性
要解决您的要求:自己搜索列表,例如:
boolean hasNoEmptyElts = myList.stream().noneMatch(s-> "".equals(s));
或者过滤掉null
个元素(我假设您不会考虑它们):
boolean hasNoEmptyElts = myList.stream().noneMatch(s-> s == null || "".equals(s));
或者创建一个覆盖isEmpty()
的List包装器。最后一种方法将使您的代码不那么标准(自定义List实现而不是JDK之一)。因此,只有在您的应用程序中非常频繁地使用此要求时才有意义。
答案 3 :(得分:0)
请使用 Apache utils。
" ".isEmpty(); // false
"".isEmpty(); // true
" ".trim().isEmpty(); // true
org.apache.commons.lang3.StringUtils.isBlank(""); // true
org.apache.commons.lang3.StringUtils.isBlank(" "); // true
无所谓,空""
或空" "
字符串会被放入列表中。
List<String> a = new ArrayList<>();
a.add(" ".trim()); // add empty string "" to the list: size == 1
要在列表中添加非空白字符串:
if(StringUtils.isNotBlank(str))
a.add(" foo ".trim()); // add "foo" string to the list