Wie kann ich eine benutzerdefinierte Klasse in einem TreeSet verwenden?

7

Wenn ich eine Set ähnlich wie folgt verwenden würde:

%Vor%

Wäre das akzeptabel, und da es ein TreeSet ist, würde es es auch sortieren?

    
SNpn 14.09.2011, 12:17
quelle

4 Antworten

19

Es wird nicht in der Lage sein, es zu sortieren, ohne dass Sie Comparable<Node> implementiert haben, und es ist nicht wirklich für Set-Operationen geeignet, bis Sie equals() und hashCode() überschreiben. (Sie haben nicht , um equals und hashCode für TreeSet zu überschreiben, um zu funktionieren, aber es wäre sinnvoll, dies zu tun.)

In etwa so:

%Vor%

(Beachten Sie, dass der Klassenname per Konvention Node , nicht node lautet.)

    
Jon Skeet 14.09.2011, 12:20
quelle
6

Knoten muss ein Comparable implementieren, oder Sie müssen einen benutzerdefinierten Comparator übergeben, der zwei Node-Objekte vergleichen kann. Außerdem basiert jede Hash-basierte Sammlung darauf, dass das Objekt die Methoden equals () und hashcode () in geeigneter Weise überschreibt.

    
Scorpion 14.09.2011 12:20
quelle
2

Sie müssen equals, hashCode angeben und die Vergleichsschnittstelle implementieren

    
leifg 14.09.2011 12:20
quelle
0

Mit dem Code ist nichts falsch, was die Akzeptanz betrifft. Aber zum Sortieren von Node -Klasse muss vergleichbare Schnittstelle implementieren.

    
Santosh 14.09.2011 12:22
quelle

Tags und Links