pod*_*dek -2 java collections loops exception
我试图从两个排序列表创建排名.
List<Ordered<String>> rankedList = Collections.synchronizedList(WebCBIR.run(queryData, clusters, idf));
List<Ordered<String>> rankedList2 = Collections.synchronizedList(WebCBIR.run(queryData, clusters));
LinkedList<Ordered<String>> result = new LinkedList<>();
Iterator<Ordered<String>> it = rankedList.iterator();
Iterator<Ordered<String>> it2 = rankedList2.iterator();
while (it.hasNext() && it2.hasNext()) {
Ordered<String> o1 = it.next();
Ordered<String> o2 = it2.next();
Ordered<String> o = null;
if(o1.value() > o2.value()){
o = o1;
rankedList.remove(o);
rankedList2.remove(o);
}
else{
o = o2;
rankedList.remove(o);
rankedList2.remove(o);
}
result.add(o);
}
Run Code Online (Sandbox Code Playgroud)
此代码调用java.util.ConcurrentModificationException.怎么处理呢?
虽然使用迭代器不会从List中删除,而是使用iterator.remove()
方法
while (it.hasNext() && it2.hasNext()) {
Ordered<String> o1 = it.next();
Ordered<String> o2 = it2.next();
Ordered<String> o = null;
if(o1.value() > o2.value()){
o = o1;
it.remove();
it2.remove();
}
else{
o = o2;
it.remove();
it2.remove();
}
result.add(o);
}
Run Code Online (Sandbox Code Playgroud)