我希望使用链表来执行元素的提取和插入操作,以试验所有启发式算法的组合方式。链表对于这种操作更加高效。
由于我想尝试提取/插入所有可能的元素对,因此我在列表上使用了两个不同的迭代器。这会引发“ConcurrentModificationException”错误。如何能够高效地执行此操作,而不需要每次重新遍历整个列表,否则这将打败使用列表的初衷?
以下是相关代码片段:
由于我想尝试提取/插入所有可能的元素对,因此我在列表上使用了两个不同的迭代器。这会引发“ConcurrentModificationException”错误。如何能够高效地执行此操作,而不需要每次重新遍历整个列表,否则这将打败使用列表的初衷?
以下是相关代码片段:
ListIterator<Integer> it1 = data.listIterator();
ListIterator<Integer> it2;
while(it1.hasNext()) {
int i = it1.next();
it2 = data.listIterator();
while(it2.hasNext()) {
if (i == it2.next()) continue; // continue right away when the indexes are equal
it1.remove();
it2.add(i);
if (length() < best)
return true;
}
// when the swap is not better/consistent
it2.remove();
it1.add(i);
}
return false;
谢谢