我正在尝试从Java的无序链表中删除重复元素(这是《破解面试》一书中的问题)。
我正在使用同一个List对象上的嵌套迭代器,但在删除项目时出现了ConcurrentModificationException
错误。这是我的代码:
Iterator<String> i = list.iterator();
String curr;
while (i.hasNext()) {
curr = i.next();
Iterator<String> j = list.iterator();
while (j.hasNext()) {
String runner = j.next();
if (curr == runner){
j.remove();
}
}
}
这本书中的解决方案使用了LinkedListNode对象,它使得只需改变节点的指针就可以实现,但是否有办法仅使用java.util.LinkedList
来解决这个问题?
编辑: 挑战在于不使用临时缓冲区来完成,否则另一个列表就可以解决问题。
==
比较String
,应该使用equals
或equalsIgnoreCase
。 - Slawlist.stream().distinct().collect(Collectors.toList());
? - Victor Gubin