从ArrayList中删除字符串

时间:2013-11-03 18:45:11

标签: java arraylist

我正在尝试处理一个方法,该方法将字符串的ArrayList作为参数,并从中删除所有偶数长度的字符串。这就是我到目前为止所做的:

public void removeEvenLength(ArrayList<String> items) {
    for (String s : items) {
        if (s.length() % 2 == 0) items.remove(s);
    }
}

由于某种原因,这不起作用,当我尝试在任何包含元素的ArrayList上运行它时,它会显示错误。有人能告诉我为什么吗?在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您无法从List中移除项目,同时也可以循环播放。请使用iterator

List<String> items = ....
Iterator<String> it = items.iterator();
while (it.hasNext()) {
   String s = it.next(); 
    if (s.length() % 2 == 0){
         it.remove();
     }

}

答案 1 :(得分:1)

你必须使用冗长的成语:

for (Iterator<String> it = items.iterator(); it.hasNext();)
  if (it.next().length() % 2 == 0) it.remove();

原因:您的增强循环编译成上述代码,当您使用Iterator时,您不能通过任何其他路由更改基础列表,除非通过调用Iterator#remove,以便迭代器知道删除。