+-

我一直在做一个允许用户将对象输入到LinkedList并将其删除的任务.除了这里令人讨厌的部分,我已经弄清了程序的所有方面…删除了重复项.我已经来了一段时间,希望有人可以指出我正确的方向.
我下面的代码几乎可以正常工作……因为它确实删除了重复项……但是仅遇到的第一个元素.因此,如何让程序查看第一项,删除其重复项,然后返回并对列表中的所有其他元素执行相同的操作?我是否应该使用“上一个”和“当前”之类的节点,而不是在这里使用的节点,并尝试以这种方式遍历LinkedList?我的教授向我暗示,需要两个while循环,但是我尝试过的所有方式都无法正常工作.我应该把什么作为第二个参数,我假设是外部while循环?
非常感谢任何帮助,谢谢!
public void removeDuplicate() //searches the LinkedList for duplicate elements, and removes them
{
ListIterator iter = listIterator();
Object uniqueO = iter.next();
while (iter.hasNext())
{
String uniqueS = (String) uniqueO;
Object compareO = iter.next();
String compareS = (String) compareO;
int x = uniqueS.compareTo(compareS);
if (x == 0)
{
iter.remove();
}
}
} //end removeDuplicate
最佳答案
它应该是固定的方式.
但是,如果您不想更改原始顺序,则可以这样做:
但是,如果您不想更改原始顺序,则可以这样做:
//在这里,您可以将set视为永不容许重复的数据结构:)
public void removeDuplicate() //searches the LinkedList for duplicate elements, and removes them
{
ListIterator iter = listIterator();
HashSet tempSet = new HashSet();
while (iter.hasNext())
{
Object obj = iter.next();
if(tempSet.contains(obj))){
iter.remove();
}else{
tempSet.add(obj);
}
}
} //end removeDuplicate
点击查看更多相关文章
转载注明原文:从Java中的LinkedList删除重复的元素 - 乐贴网