[英]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.