如何删除一定长度的字符串

Mac*_*Iam 1 java

所以我有这个数组,我想删除长度为2或4个字符的字符串(包含2或4个字符的字符串).我正在做这个方法,它不起作用,即使在逻辑上,它应该工作.

public static void main(String[] args) 
{
    ArrayList<String> list = new ArrayList<String>();
    list.add("This");
    list.add("is");
    list.add("a");
    list.add("test");
    for (int i=0; i<list.size(); i++)
    {
        if(list.get(i).length()==2 || list.get(i).length()==4)
        {
            list.remove(i);  
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我想坚持这种做法.你能否就如何纠正这些代码给我一些建议?

运行它时,此代码的输出是:

 [is, a]
Run Code Online (Sandbox Code Playgroud)

即使我想要输出

 [a]
Run Code Online (Sandbox Code Playgroud)

因为"是"是2个字符长.

勿绮语*_*勿绮语 7

名单正在改变.从最后一个元素迭代到第一个元素或使用迭代器.


Bri*_*128 6

PeterPeiGuo是对的 - 你正在删除正在改变索引的元素.

这是迭代器的主要候选者.

Iterator<String> it = list.iterator();
while(it.hasNext()) {
  String val = it.next();
  if(val.length() == 4 || val.length() == 2) {
    it.remove();
  }
}
Run Code Online (Sandbox Code Playgroud)