Ich bin Neuling in Java. Ich habe eine ArrayList
und möchte Duplikate beim Einfügen vermeiden. Mein ArrayList
ist
und das Feld, das ich prüfen möchte, ist:
%Vor% Ich habe gelesen, dass ich HashSet
oder HashMap
verwenden kann, aber ich habe keine Ahnung.
Immer wenn du Duplikate verhindern willst, möchtest du Set
verwenden.
In diesem Fall wäre ein HashSet für Sie in Ordnung.
%Vor%Der Vollständigkeit halber würde ich auch vorschlagen, dass Sie die generische (parametrisierte) Version der Klasse verwenden, unter der Annahme, dass Java 5 oder höher ist.
%Vor%Dies gibt Ihnen eine gewisse Sicherheit, um Gegenstände in Ihr Set zu bekommen.
Ein Set ist einfach eine Sammlung, die keine Duplikate enthalten kann, also klingt es perfekt für Sie.
Es ist auch sehr einfach zu implementieren. Zum Beispiel:
%Vor%Dies würde Ihnen eine Menge bieten, die Objekte vom Typ String enthalten kann.
Das Hinzufügen zum Set ist genauso einfach:
%Vor%Nach der Definition eines Satzes können Sie hinzufügen, was Sie wollen, und niemals ein Duplikat ausführen.
Viel Spaß!
BEARBEITEN: Wenn Sie entscheiden, dass Sie eine ArrayList verwenden, ist es einfach zu sehen, ob ein Objekt bereits in der Liste ist, bevor Sie es hinzufügen. Zum Beispiel:
%Vor%Hinweis: Alle meine Beispiele gehen davon aus, dass Sie String-Objekte verwenden, aber sie können leicht in einen anderen Objekttyp getauscht werden.
Verwenden Sie HashSet
anstelle von ArrayList
. Um wirklich sicherzustellen, dass HashSet
wirklich gut funktioniert, müssen Sie die Methoden equals()
und hashCode()
der Klasse / Objekte überschreiben, die in HashSet
eingefügt werden.
Feind Beispiel:
%Vor% Bitte beachten Sie die folgende Dokumentation zum Überschreiben von hashCode()
und equals()
.
Sie müssen jede Set
Implementierung verwenden, z. B. können Sie HashSet
verwenden.
Wenn Sie add
benutzerdefiniertes Objekt kar
in Ihr HashSet
einfügen möchten, müssen Sie override
equals
und hashcode
method verwenden.
Sie können mehr über equals
und hashcode
, lesen
Sie können eine eigene Liste implementieren, die LinkedList erweitert und ihre Add-Methoden überschreibt:
Tags und Links java data-structures