2013-12-11 43 views

回答

0

創建一個新的HashMap。迭代你的列表,並將它添加到一個HashMap中,將它們映射到Boolean.TRUE。在將對象添加到HashMap之前,檢查它是否已經在HashMap中。如果它已經存在 - 這是第一個重複。

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 
    } 
} 

應該比嵌套循環效率更高;)

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; 
    } 
} 
+0

我想我使用你的方法發現了一個問題。我正在有效地查看一張牌,所以即使這些牌具有相同的值,它們也不是相同的對象。所以我想我應該指定我需要在鏈表中找到具有重複值的卡片,而不是重複的對象,但是謝謝您幫助我清楚地識別問題 – user3074140

+0

@ user3074140如果您重新定義了equals方法,那應該可行。但是,請注意,實施並不是非常有效。 – user2336315