Java: Vermeiden Sie das Einfügen von Duplikaten in Arraylist

8

Ich bin Neuling in Java. Ich habe eine ArrayList und möchte Duplikate beim Einfügen vermeiden. Mein ArrayList ist

%Vor%

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.

    
user2766131 25.09.2013, 19:44
quelle

6 Antworten

22

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.

    
Mike Clark 25.09.2013 19:47
quelle
4

Sie können LinkedHashSet verwenden, um doppelte Elemente zu vermeiden und die Reihenfolge der Anzeigen beizubehalten.

Ссылка

    
Kent 25.09.2013 19:47
quelle
4

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.

    
r0t0xd 25.09.2013 19:48
quelle
4

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() .

    
blackpanther 25.09.2013 19:45
quelle
0

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

    
Sajan Chandran 25.09.2013 19:50
quelle
0

Sie können eine eigene Liste implementieren, die LinkedList erweitert und ihre Add-Methoden überschreibt:

  1. public boolean add (E e)
  2. public void add (int-Index, E-Element)
  3. public boolean addAll (Sammlungssammlung)
  4. public boolean addAll (int-Index, Collection-Auflistung)
Danail Tsvetanov 28.03.2018 14:26
quelle

Tags und Links