修剪仅包含空格的字符串会发生什么?

时间:2018-05-24 11:19:25

标签: java arraylist

我有一个ArrayList和一个只包含空格的字符串:

ArrayList<String> a = new ArrayList<String>();
String data="               ";
a.add(data.trim())

a.isEmpty()返回false。

如何检查a没有像数据这样的元素?

4 个答案:

答案 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