java TreeSet - entfernen Sie nicht die doppelte Elemente
TreeSet entfernt verschiedene Elemente mit dem gleichen Comprator Wert. Ich will ihn nicht entfernt werden.
Gibt es eine Möglichkeit, dies zu kontrollieren? Oder verwenden Sie eine andere container-Klasse?
Hinzugefügt:
OK. Es scheint, ich kann nicht verwenden Gesetzt.
Ich muss einfügen, Sortieren-Funktion, Leistung für Gegenleistung. Kann die Liste tun? Vielen Dank an alle.
Use-Liste statt.
Verwenden Sie einen Komparator, die nicht 0 zurückgeben.
Lawrey Anderen als Objekt, sind in gewisser Weise identisch.
Hawtin, vereinbart, Sie könnte geben 0 zurück, wenn die Objekte
Lawrey
Verwenden Sie einen Komparator, die nicht 0 zurückgeben.
Lawrey Anderen als Objekt, sind in gewisser Weise identisch.
Hawtin, vereinbart, Sie könnte geben 0 zurück, wenn die Objekte
==
sonst vergleichen Sie die System.identityHashCode()
oder einfach nur wieder eine willkürliche 1
für Objekte, die den gleichen Inhalt haben, aber nicht das gleiche Objekt.Lawrey
System.identityHashCode
ist nicht eindeutig. Also Sie müssen noch ein tie-breaker (vielleicht mit WeakReference
s).InformationsquelleAutor pengguang001 | 2011-05-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Satz per definitionem nicht haben kann doppelte Einträge.
So dass Sie brauchen, um eine Liste oder ein Array oder so
InformationsquelleAutor Heiko Rupp
Ist es sogar ein gesetzt, ist dies immer noch verwirrend, da die Objekte unterschiedlich sind. Zum Beispiel, ein
Set<E>
verschiedene ObjekteE
drop einige Objekte bei der Konvertierung in einTreeSet<E>
auf der Grundlage derComparator<E>
verwendet. In beiden Fällen ist es ein Satz, aber der Satz von Elementen gespeichert wird anders sein. Meiner Meinung nach ist dies nicht geklärt ist, sowie in der Dokumentation.Eine einfache Lösung, wenn Sie ändern, können die Komparator, lassen Sie es nicht 0 zurückgeben. Zum Beispiel statt:
Verwenden:
InformationsquelleAutor deepkimo
Einen Hauptzweck eines
Set
ist nicht haben Duplikate.Sie will sich entweder nicht ein
Set
oder benötigen Sie eine andereComparator
.InformationsquelleAutor Alan Escreet
Einem Zitat aus Javadoc für Set:
Verwenden Sie eine beliebige Ableitung von Liste.
Man kann immer irgendwie eine Liste mit den Sammlungen.sort (...), und Ihre ursprüngliche Komparator. Alternitavely, die Sie verwenden können, 2 sets, eins mit den Elementen und anderen mit Ihrem Erscheinungsbild zählen, d.h. der Art multiset
Versuchen PriorityQueue von hier aus docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html oder MinMaxPriorityQueue von hier aus docs.guava-libraries.googlecode.com/git/javadoc/com/google/...
InformationsquelleAutor Andrey Adamovich
Wenn Sie möchten, eine SortedList Sie können zum Beispiel eine Liste und manuell aufrufen Sammlungen.sort() nach jedem einfügen.
Oder wickeln Sie z.B. eine ArrayList, um sicherzustellen, die sort-Aufrufe für Sie:
Ich hoffe, ich habe alle Funktionen, die erforderlich sein kann, zu Sortieren. (Entfernen ist nicht notwendig, Sie zu überschreiben)
InformationsquelleAutor Denis Lukenich