繁体   English   中英

如何在链表中查找重复项-Java

[英]How to find duplicates in a linkedlist - java

您将如何浏览链表以找到列表中的第一个重复对象,可以使用嵌套的for循环(如数组)来完成它吗?

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

您还可以将元素添加到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
    }
}

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

您可以检查列表中对象的第一个和最后一个索引。 如果两者的减法都小于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;
     }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM