删除带前缀的元素

时间:2015-03-22 01:13:52

标签: java arrays arraylist removeall

我试图删除具有相同前缀的arrayList的所有元素,这是我的代码

public void removeWordsWithPrefix(String prefix)  { 

    for(Concept def:list){
      if(def.getName().toLowerCase().substring(0,prefix.length()).equals(prefix.toLowerCase() )) 
        {
            list.remove(def);
        }

    }       
}

问题是只删除带有该前缀的第一个单词而不删除其他单词。

2 个答案:

答案 0 :(得分:0)

从列表中删除条目时,应该向后迭代;例如:

for(int i = list.size()-1; i >= 0; i--) {
  // you're free to remove an item from index i here
}

如果您想添加更多样板文件,还可以使用Iterator返回的list.iterator()

答案 1 :(得分:0)

首先,startsWith(前缀)将完成作业,而不是substring和equals。

其次,除非使用迭代器,否则无法从列表中删除迭代(取决于列表实现,您可能会遇到异常或意外行为)。

因此使用显式迭代器及其remove方法, 或使用索引进行iterrate。