Java 如何从仅包含空白字符的ArrayList中删除字符串?

Java 如何从仅包含空白字符的ArrayList中删除字符串?,java,string,arraylist,Java,String,Arraylist,我想删除列表中只包含空白字符的所有字符串。我尝试了以下代码,但某些行未被删除: List<String> getarray = /* ... */; for (int i = 0; i < getarray.size(); i++) { if (getarray.contains(" ").getarray.contains(null)) { getarray.remove(i); } else { System.out.pri

我想删除列表中只包含空白字符的所有字符串。我尝试了以下代码,但某些行未被删除:

List<String> getarray = /* ... */;

for (int i = 0; i < getarray.size(); i++) {
    if (getarray.contains(" ").getarray.contains(null)) {
        getarray.remove(i);
    } else {
        System.out.println("a: " + getarray.get(i));
    }
}
List getarray=/*…*/;
对于(int i=0;i
这只适用于某些输入,有人能帮我理解为什么吗


首先,使用一些迭代器来迭代并执行从ArrayList中删除元素的操作

其次,要解决空字符串的问题,可以使用trim()isEmpty()方法

请尝试以下代码:

Iterator<String> it = getarray.iterator();
while (it.hasNext()) {
      String myValue = it.next();
      if (myValue.trim().isEmpty()) {
            it.remove();
      } else {
            System.out.println("a: " + myValue);
      }
}
Iterator it=getarray.Iterator();
while(it.hasNext()){
字符串myValue=it.next();
if(myValue.trim().isEmpty()){
it.remove();
}否则{
System.out.println(“a:+myValue”);
}
}

如果要删除元素,请使用迭代器。根据Java文档:

迭代器取代了Java集合框架中的枚举。迭代器与枚举有两种不同: 迭代器允许调用方在迭代期间使用定义良好的语义从基础集合中删除元素。 方法名称已得到改进

请尝试以下代码:

Iterator<String> itr = getarray.iterator();
    while (itr.hasNext()) {
        String value = itr.next();
        if (value.trim().isEmpty()) {
            itr.remove();
        } else {
            System.out.println("a: " + value);
        }
    }
Iterator itr=getarray.Iterator();
while(itr.hasNext()){
字符串值=itr.next();
if(value.trim().isEmpty()){
itr.remove();
}否则{
System.out.println(“a:+值);
}
}
您误解了元素为空或仅由空格和元素包含空格组成:

所以它是
element.trim().isEmpty()
而不是
element.contains(“”)

.trim()
删除
字符串开头和结尾处的空格


这将完成您的工作,它将在列表上迭代,并且只保留不为空的元素(或者只包含空格)

如果您想在执行以下操作后打印所有内容:
getarray.forEach(System.out::println);

是否要删除任何只包含空格字符的行?尝试
String.trim
然后
String.isEmpty
@krunal看看我发布的答案,它是如此快速和小的代码;)@azro我同意,您的代码更小,看起来更好,但对于刚刚学习编程或是Java新手的人来说,这真的很难理解。我认为krunal试图理解循环和字符串的工作原理,lambdas和stream api可能有点太多了。您将删除所有包含空格的元素,而不是空元素^^^^我对这个问题有点误解。谢谢
getarray = getarray.stream().filter(s -> !s.trim().isEmpty()).collect(Collectors.toList());