我正在尝试删除在我的列表中出现5次的String
。这就是我尝试过的:
for(String obj : list1)
{
if(new ArzList().countOccurrence(list1, obj ) == 5)
{
list2.add(obj);
list1.removeAll(Collections.singleton(obj));
}
else{
list3.add(obj);
list1.removeAll(Collections.singleton(obj));
}
}
但我每次都得到java.util.ConcurrentModificationException
。
我该如何解决?
答案 0 :(得分:2)
您不应该通过相同的列表进行迭代和删除。
创建原始列表的副本。遍历原始列表但从复制版本中删除项目。返回列表的重复(复制)版本。
答案 1 :(得分:0)
不允许在迭代器中途修改数据结构。
你可以在这里使用正常循环:
for (int i = 0; i < list1.size(); i++) {
String obj = list1.get(i);
...
}
答案 2 :(得分:0)
您只能使用Iterator从集合中循环删除元素。
Iterator<String> myIterator = list1.iterator();
while(myIterator.hasNext()) {
//add logic to search list and delete element here
}