我试图删除具有相同前缀的arrayList的所有元素,这是我的代码
public void removeWordsWithPrefix(String prefix) {
for(Concept def:list){
if(def.getName().toLowerCase().substring(0,prefix.length()).equals(prefix.toLowerCase() ))
{
list.remove(def);
}
}
}
问题是只删除带有该前缀的第一个单词而不删除其他单词。
答案 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。