Zum Inhalt springen

Problem mit contains in Set


daniel_bln

Empfohlene Beiträge

Hallo Leute,

Ich möchte gerne Objekte einer bestimmten Klasse in eine Collection speichern. Dabei wäre es mir wichtig, dass der Zugriff auf ein beliebiges Objekt sehr schnell von Statten geht, da ich stets mit der contains Methode abfragen möchte, ob dieses Objekt in der Collection enthalten ist.

Das mit der contains Methode der Collection funktioniert leider noch nicht ganz. Denn sie gibt mir immer ein false zurück wenn ich frage, ob ein gewisses Objekt in der Collection enthalten ist.

Ich habe ein bestimmtes Objekt. Beispielsweise ein Objekt mit folgenden Attributen.



private int id;


private int id2;


private int id3;


Nun möchte ich abfragen, ob ein solches Objekt mit bereits initalisierten Werten in der Collection bereits drin ist.

Zum Beispiel mit id = 3, id2 = 4, und id3 = 5;

Dazu erzeuge ich ein neues Objekt dieses Objektes mit diesen Werten und frage dann ab, ob dieses Objekt enthalten ist in der Collection.

Selbst wenn dies der Fall ist, wird mir ein false zurückgegeben. Ich vermute dass es daran liegt, dass die contains Methode der Collections die Referenzen der Objekte vergleicht.

Naja, lange Rede kurzer Sinn. Ich wollte eigentlich nur fragen, ob es überhaupt möglich ist in einer Collection zu überprüfen, ob in ihr ein Objekt existiert, bei dem die AttributWerte mit den Attributwerten eines bestimmten Objektes übereinstimmt.

Ich möchte es mir erspraren mit einem Iterator die Collection durchzugehen und dann alle Attribute einzelnd abzufragen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Welche Collection verwendest du? Für die java.util.* (und eigentlich alle mir sonst bekannten Implementierungen) gilt:

Many methods in Collections Framework interfaces are defined in terms of the equals method. For example, the specification for the contains(Object o) method says: "returns true if and only if this collection contains at least one element e such that (o==null ? e==null : o.equals(e))." This specification should not be construed to imply that invoking Collection.contains with a non-null argument o will cause o.equals(e) to be invoked for any element e. Implementations are free to implement optimizations whereby the equals invocation is avoided, for example, by first comparing the hash codes of the two elements. (The Object.hashCode() specification guarantees that two objects with unequal hash codes cannot be equal.) More generally, implementations of the various Collections Framework interfaces are free to take advantage of the specified behavior of underlying Object methods wherever the implementor deems it appropriate.

Und im speziellen für contains:

Returns true if this collection contains the specified element. More formally, returns true if and only if this collection contains at least one element e such that (o==null ? e==null : o.equals(e)).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...