如何在链表中找到重复项 - java

时间:2013-12-11 22:41:09

标签: java

您如何通过链表查找列表中的第一个重复对象,是否可以使用嵌套for循环来完成?

3 个答案:

答案 0 :(得分:0)

创建一个新的HashMap。迭代您的列表并将其中的对象添加到HashMap,例如将它们映射到Boolean.TRUE。在将对象添加到HashMap之前,请检查它是否已经在HashMap中。如果它已经存在 - 这是第一个重复。

答案 1 :(得分:0)

您还可以向HashSet添加元素,直到遇到第一个副本:

Set<YourObject> set = new HashSet<YourObject>();
for (YourObject obj : yourList) {
    if (!set.add(obj)) {  // check if already existed in the set
        return obj;   // found the duplicate
    }
}

应该比嵌套循环更有效;)

答案 2 :(得分:0)

您可以在列表中检查对象的第一个和最后一个索引。如果两者的减法都低于0,那意味着你有重复。

LinkedList<String> s = new LinkedList<>();
/*
 * Fill it here
 */ 
for(String str : s){
    if(linkedList.indexOf(str) - linkedList.lastIndexOf(str) < 0){
        System.out.println("First duplicate is: " + str);
        break;
     }
}