如何在java中轻松删除链表中的重复项?

如何在java中轻松删除链表中的重复项?,java,linked-list,Java,Linked List,如何在java中轻松删除链表中的重复项?在什么方面轻松?如果它是一个相当短的列表,最简单的解决方案是将其转储到一个集合,然后返回到一个列表 myList = new LinkedList<Whatever>(new HashSet<Whatever>(myList)); 但为什么要为此烦恼呢?如果你不想要复制品,你应该使用;如果您只需要一个列表,这样就可以保持元素的插入顺序不变,那么您可以使用a来充分利用这两个方面:一个可以像LinkedList一样进行可预测的迭代的集

如何在java中轻松删除链表中的重复项?

在什么方面轻松?如果它是一个相当短的列表,最简单的解决方案是将其转储到一个集合,然后返回到一个列表

myList = new LinkedList<Whatever>(new HashSet<Whatever>(myList));

但为什么要为此烦恼呢?如果你不想要复制品,你应该使用;如果您只需要一个列表,这样就可以保持元素的插入顺序不变,那么您可以使用a来充分利用这两个方面:一个可以像LinkedList一样进行可预测的迭代的集合。

使用a,那么您首先就不会有重复的元素。

我不知道您是否需要使用链接列表,但如果不需要,使用一个集合,而不是将问题标记为“最佳实践”的列表

搜索它们,如果两个代表相同的内容,则删除其中一个


你还想要什么?您是否需要有关如何快速执行此操作的建议?如果是这种情况,请将节点存储在哈希表中,以便在查找重复节点时轻松匹配。

我同意您在需要集合时不使用列表。代码的一个小细节:myList=newlinkedlistnewhashsetmylist;因为Set是一个接口。很抱歉吹毛求疵^^我遗漏了一些细节,很抱歉,数据结构需要无重复、排序,并且能够有迭代器。像TreeSet这样的排序集可以完成所有这些。@Peter Lawrey-感谢您的评论,几天前我确实发现了TreeSet数据结构,这正是我所需要的。这就是确切的答案:在API LinkedHasSets rock中出现之前,我一直在制作这些数据结构。我一直在看那个打字错误,认为应该有一只猫在后面。链接可以设置?+1-很好。考虑添加一个链接到适当的Javadoc。我最后使用了一个树集而不是一个简单的集合,但这是你的答案,让我得出了这个结论,再次感谢。
import java.util.*;
import java.lang.*;

class Main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        Collection<String> c = new LinkedList<String>();
        c.add("JAR");c.add("BDK");c.add("JDK");c.add("JAR");c.add("WAR");c.add("APK");c.add("BDK");
        c=new HashSet(c);
        c=new ArrayList(c);
        for(String s : c)
        {
            System.out.println(s);
        }
    }
}