2016-04-07 15 views
-2

In Java zu finden, ich habe zwei Arraylisten:Der beste Weg, Duplikate aus zwei Liste

A = [Ab, cd, df, FE, ...] 
B = [ab, cde, de, fE, ...] 

Wenn die Listen ein wenig groß, die Brute-Force-Methode sind sehr langsam:

for(String a : A) { 
    for(String b : B) { 
    if(a.equalsIgnoreCase(b)) { 
     System.out.println("duplicate: " + a "->" + b); 
    } 
    } 
} 

Was ist der beste Weg, um es schneller zu machen, aber nicht sehr kompliziert zu implementieren?

+0

Sets und eine entsprechende Vergleichsfunktion. – Savior

Antwort

2

einfachste Implementierung ist es, Sätze zu verwenden, wie folgt vor:

final String A[] = {"Ab", "cd", "df", "FE"}; 
final String B[] = {"ab", "cde", "de", "fE"}; 

final Set<String> set = new HashSet<>(A.length); 
for (final String a : A) 
    set.add(a.toLowerCase()); 
for (final String b : B) 
    if (set.contains(b.toLowerCase())) 
     System.out.println("duplicate: " + b); 
+0

Was ist, wenn das Problem erfordert, Duplikate aus der Liste A zu entfernen? – user697911

+0

@ user697911 dann verwenden Sie "List", Iterator und seine 'remove' Methode –

Verwandte Themen