+-
从Java中的LinkedList删除重复的元素
我一直在做一个允许用户将对象输入到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删除重复的元素 - 乐贴网