Java Entfernen von Duplikaten aus einem Array?

7

Ich soll eine Datei einlesen, die viele verschiedene E-Mail-Adressen enthält, und sie mit einem Array ausdrucken. Das Problem ist, ich muss doppelte E-Mails beseitigen.

Ich konnte meinen Versuch / Fang arbeiten und die E-Mail-Adressen ausdrucken. Ich bin mir jedoch nicht sicher, wie ich die Duplikate entfernen soll. Ich habe kein Verständnis für Hashcodes oder wie man Set noch benutzt. Jede Hilfe wäre willkommen.

Hier ist was ich bisher habe:

%Vor%     
Bean Winz 07.04.2012, 17:35
quelle

9 Antworten

31

Die einfache Lösung ist, dass set java verwendet wird,

Setzen Sie den doppelten Wert automatisch

und in Ihrem Code haben Sie Array als Array konvertieren direkt mit Code

setzen %Vor%     
Yogesh Prajapati 07.04.2012 17:39
quelle
4

Lerne Set . Die Zeit, die Sie brauchen, um es zu lernen, ist geringer als die Zeit, die Sie brauchen, um etwas zu programmieren, das es nicht benutzt.

Ich werde dich anfangen. Ersetzen Sie dies:

String[] address = new String[100];

mit diesem:

Set<String> addresses = new HashSet<String>();

Und das:

address[i] = email;

mit diesem:

addresses.add(email);

Sie brauchen das i nicht mehr.

Du bist fertig. Wenn Sie alles ausdrucken möchten:

%Vor%

Das deckt es ziemlich genau ab. Soll alles automatisch sortiert werden? Ersetzen Sie% HashSet durch TreeSet . Jetzt lesen Sie dieses hervorragende Tutorial , damit Sie das nächste Mal alles schneller und schneller erledigen können dein eigenes.

    
sparc_spread 07.04.2012 17:47
quelle
3

Lesen Sie sie stattdessen in HashSet . Dies behandelt Duplikate für Sie.

%Vor%

Gibt 1 aus.

    
krock 07.04.2012 17:39
quelle
2

Sie können versuchen, jedes Element im Array durchzugehen, indem Sie es zu einem anderen Element hinzufügen und prüfen, ob das zweite Array das nächste Element enthält, falls es es überspringt. Dann ersetzen Sie einfach das erste Array durch das zweite. ( ArrayList ist in diesem Fall jedoch besser).

so etwas wie das:

%Vor%     
user1241335 07.04.2012 17:37
quelle
1

Verwenden Sie die ArrayUtil-Klasse nach Bedarf. Ich habe einige andere Methoden geschrieben als das Entfernen von Duplikaten. Diese Klasse wird ohne Verwendung von Collection-Framework-Klassen implementiert.

%Vor%     
Deepanjan Das 24.08.2015 05:33
quelle
0

Verwenden Sie den folgenden Code zum Entfernen von Duplikaten in einem Integer-Array.

%Vor%
    
Bipil Raut 15.07.2016 05:41
quelle
0

Wenn Sie Duplikate entfernen möchten, können Sie Folgendes versuchen:

%Vor%     
user7973776 13.05.2017 20:12
quelle
-1

Das erste, was mir in den Sinn kommt, ist, das Array zu sortieren und dann zu prüfen, ob das nächste Element dem aktuellen Element entspricht. Wenn ja, löschen Sie das aktuelle Element.

oh und wenn Sie nicht wissen, wie viele E-Mails in der Datei gespeichert sind, ist ein Array wahrscheinlich nicht der beste Weg. Ich würde irgendeine Art von Liste nehmen, so dass ich mich nicht darum kümmern muss, wie viele E-Mail-Adressen in der Datei sind.

    
CAA 07.04.2012 17:38
quelle
-1

Sie können eine Funktion schreiben, die auf dem Array ausgeführt wird und eine E-Mail gleichzeitig aufnimmt. Wenn sie dieselbe Adresse findet, wird sie einfach auf null gesetzt. Wenn Sie mit dem Array arbeiten, um es auszudrucken, machen Sie eine Bedingung, um die E-Mail nur zu drucken, wenn es nicht null ist

    
Asaf Nevo 07.04.2012 17:39
quelle

Tags und Links