HashSet<String> das selbe oder das gleiche?

Markey

Mitglied
Hallo ihr lieben,

ein HashSet verhindert ja im Regelfall, dass gleiche Objekte der Datensammlung hinzugefügt werden.

Mich würde interessieren wie sich ein HashSet mit dem "Typ" <String> verhält!?
Sehe ich dass richtig, dass der gleiche Text in verschiedenen Variablen mehrmals hinzugefügt werden kann?

Kann ich das ganze irgendwie umgehen um nur auf Gleichartigkeit und nicht auf Objekt ID zu prüfen`ß

Vielen Dank.

Markey
 

Antoras

Top Contributor
Es gibt in Java zwei Möglichkeiten Objekte miteinander zu vergleichen. Einmal über die Methode equals (vergleicht den Inhalt eines Objekts, also ob sie identisch sind), und einmal über den ==-Operator (vergleicht die Referenzen der Objekte, also ob es ein und dasselbe Objekt ist).

Strings nehmen eine Sonderrolle in der JVM ein. Diese prüft nämlich ob ein String schon existiert und falls ja legt sie nicht ein neues String-Objekt an, sonder nur eine neue Referenz auf das alte Objekt. Das macht sie allerdings nicht immer sondern nur manchmal.
 

Raum114

Mitglied
In der Klasse java.lang.String sind die Methoden equals() und hashCode() bereits implementiert. D.h. beim hinzufügen eines Strings mit gleichem Inhalt wie schon im HashSet enthalten, wird der String nicht hinzugefügt.
 

tuttle64

Bekanntes Mitglied
Hallo ihr lieben,

ein HashSet verhindert ja im Regelfall, dass gleiche Objekte der Datensammlung hinzugefügt werden.

Mich würde interessieren wie sich ein HashSet mit dem "Typ" <String> verhält!?
Sehe ich dass richtig, dass der gleiche Text in verschiedenen Variablen mehrmals hinzugefügt werden kann?


nein. bei strings ist equals mit einem compareTo implementiert und der hashCode wird aus dem Stringinhalt gebildet. Somit geht das nicht.


Kann ich das ganze irgendwie umgehen um nur auf Gleichartigkeit und nicht auf Objekt ID zu prüfen`ß


Was soll das bringen?
 

Wildcard

Top Contributor
Kann ich das ganze irgendwie umgehen um nur auf Gleichartigkeit und nicht auf Objekt ID zu prüfen`ß
Es gibt eine IdentityHashMap, allerdings kein IdentitySet. Das müsstest du selbst implementieren, allerdings sollte das sehr einfach machbar sein durch Subclassing oder indem du intern eine IdentityHashMap verwendest.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Prüfen, ob ein String 2x das selbe Zeichen hat Allgemeine Java-Themen 10
P Am Application Server - Selbe files aber trotzdem CNF Allgemeine Java-Themen 2
J unterschiedliche Objekte, selbe getter und setter Allgemeine Java-Themen 15
B JavaFX fxml, die selbe Instanz der Klasse Allgemeine Java-Themen 4
C HASH Algorithmus 2 Strings ergeben das Selbe. Allgemeine Java-Themen 2
bueseb84 Gleiche Maven Versions in Child Modulen Allgemeine Java-Themen 13
parrot Gleiche Buchstaben Aufage Allgemeine Java-Themen 40
M ZipOutputStream gleiche Datei andere Größe? Allgemeine Java-Themen 0
T Gleiche Operation dauert teilweise sehr lange Allgemeine Java-Themen 12
R Gleiche Objektreferenz trotz clone()? Allgemeine Java-Themen 12
turmaline OOP zwei gleiche Methoden mit kleinen Unterschieden Allgemeine Java-Themen 15
G Gleiche Packages in verschiedenen JAR Dateien - Welches Package wird verwendet? Allgemeine Java-Themen 5
J Gleiche Packagestruktur in zwei *.jar Dateien Allgemeine Java-Themen 4
M Die gleiche Klasse in mehreren JAR files Allgemeine Java-Themen 5
B Liste auf gleiche Elemente untersuchen? Allgemeine Java-Themen 2
V String formatiert ausgeben ( gleiche Anzahl von Ziffern ) Allgemeine Java-Themen 5
E ArrayList referenziert immer auf das gleiche Objekt Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben