Collections TreeSet/TreeMap, doppelte Einträge zulassen ?

Back2Basic

Mitglied
moinsen,

hab folgendes Problem,

ich hab ungefähr 78000 Objekte die ich in einen TreeSet/TreeMap abspeichern soll.

Das Problem ist nur das ich auf ungefähr 17.000 komme, es werden wohl Objekte nicht eingefügt die vom Wert her gleich sind etc.

Gibt es eine Lösung die mir zulässt das ich doppelte Einträge habe oder muss ich meine Objekte irgendwie erweitern (zb. Counter).

mit freundlichen Grüßen
 
B

bygones

Gast
du musst die compare Methode deiner Klasse anpassen. d.h. sie darf nicht 0 zurueckliefern.
 

Back2Basic

Mitglied
mein Professor meinte das ich einen Wert anhängen sollte, nur wie funzt das ohne das der Baum völlig entarntet bzw. meine keys ( nach den ich sortiere ) manipulieren muss.

keys << kommen mehr als einmal vor
 
B

bygones

Gast
entweder du machst deine keys eindeutig oder eben du aenderst wie du sortierst.

wenn deine keys eindeutig sein sollen, dann musst du diese eindeutigkeit in der equals bzw compareTo methode definieren (zb mit einem zusaetzlichen counter).

ansonsten eben beim sortieren 0 nicht zulassen und einen Wert <0 oder > 0 zurueckgeben
 
S

SlaterB

Gast
was ist das denn für ein doppelter Vorschlag, bei gleichen Elementen soll compareTo <0 zurückgeben?
und das läßt die Welt nicht abstürzen?

Keys eindeutig machen klingt für mich besser, oder gleiche Elemente zu Listen zusammenfassen
 

Back2Basic

Mitglied
schonmal danke für die Vorschläge,

Mein Element besteht halt aus 2 Strings

Wortpaar ( string 1 , string 2)

nach dem ersten String wird sortiert nur habe ich halt 1000 x einen "." oder "?"

Einen internen Counter basteln, darauf bin ich auch schon gekommen aber wenn ich alle elemente suche die "." haben um daraus Gibberisch zu produzieren o0 . Da würde ich ja ne Fehler kriegen, , klar kann ich auch mein value durchsuchen aber dachte das geht irgendwie anderes grr.
Zumindest laut meinem Professor ist das ne 5 Zeiler...
 
B

bygones

Gast
was ist das denn für ein doppelter Vorschlag, bei gleichen Elementen soll compareTo <0 zurückgeben?
und das läßt die Welt nicht abstürzen?
wenn gleiche Element in einer sortieren Liste eingefuegt werden sollen, ist es egal ob sie nun vor einander oder hineinander stehen (je nach dem von welchem Element man sieht), ergo kann man bei gleichheit in der compareTo methode bei 0 entweder einfach einen negativen wert oder einfach einen positiven wert zurueckgeben (im normalfall waere das dann -1 bzw 1)
 
B

bygones

Gast
schonmal danke für die Vorschläge,

Mein Element besteht halt aus 2 Strings

Wortpaar ( string 1 , string 2)

nach dem ersten String wird sortiert nur habe ich halt 1000 x einen "." oder "?"

Einen internen Counter basteln, darauf bin ich auch schon gekommen aber wenn ich alle elemente suche die "." haben um daraus Gibberisch zu produzieren o0 . Da würde ich ja ne Fehler kriegen, , klar kann ich auch mein value durchsuchen aber dachte das geht irgendwie anderes grr.
Zumindest laut meinem Professor ist das ne 5 Zeiler...
kannst du nicht deine equals methode bzw dein sortierer erweitern, dass wenn string1 gleich ist, nach string2 sortiert wird ?!
 

Back2Basic

Mitglied
hmm brauch den leider noch für andere Sachen :D

Muss leider auch alles vorgefertigte aus den Collections benutzen, inkl den Sortieralgorithmen etc.
 
N

nillehammer

Gast
bygones hat gesagt.:
wenn gleiche Element in einer sortieren Liste eingefuegt werden sollen, ist es egal ob sie nun vor einander oder hineinander stehen (je nach dem von welchem Element man sieht), ergo kann man bei gleichheit in der compareTo methode bei 0 entweder einfach einen negativen wert oder einfach einen positiven wert zurueckgeben (im normalfall waere das dann -1 bzw 1)
Ich halte das für einen schlechten Vorschlag. Die compareTo() sollte immer konsistent zu equals() sein. Wenn man Deinen Vorschlag umsetzt, kann man Instanzen dieser Klasse nicht mehr in Treebasierten Strukturen (TreeSet, TreeMap) speichern. Wenn man inkonsistent zu equals() vergleichen will, sollte man das über einen dedizierten Comparator machen.
 
S

SlaterB

Gast
selbst wenn man equals außen vorläßt, so wie auch equals oft genug ohne hashcode() funktioniert,
ist es einfach grausig, ein nicht reproduzierbares compareTo-Verhalten zu haben

A wird eingefügt,
B wird eingefügt, ist gleich A, wird mit A vergleichen, landet links von A,
nach A wird gesucht, ist gleich B aber Vergleich liefert wieder kleiner, also wird links von B weitergesucht aber da ist nix da A rechts von B steht?

man kann ja Elemente in Sortierung pressen, aber nicht pauschal -1 zurückgeben, sondern z.B.
Reflexive Relation ? Wikipedia
wahren!
 
B

bygones

Gast
Ich halte das für einen schlechten Vorschlag. Die compareTo() sollte immer konsistent zu equals() sein. Wenn man Deinen Vorschlag umsetzt, kann man Instanzen dieser Klasse nicht mehr in Treebasierten Strukturen (TreeSet, TreeMap) speichern. Wenn man inkonsistent zu equals() vergleichen will, sollte man das über einen dedizierten Comparator machen.

das ist ein Missverstaendnis. Ich spreche hier nicht von der equals/compareTo methode des Objektes selber, sondern eben nur ueber einen dedizierten Comparator.

Daher meine Aussage "entweder eindeutigen key oder das sortieren aendern" - sorry wenn das falsch ausgedrueckt war
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Collections Fragen zu gleichen Elementen in TreeSet Allgemeine Java-Themen 35
T Collections TreeSet.contains ruft nicht .equals? Allgemeine Java-Themen 4
B TreeSet-Ausgeben Allgemeine Java-Themen 8
K Collections TreeSet beinhaltet Objektleichen Allgemeine Java-Themen 26
S TreeSet - Comparator ändern -> resort? Allgemeine Java-Themen 8
M Vergleich von TreeSet<HashSet>^2 Allgemeine Java-Themen 8
H Problem beim Sortieren einer HashMap mit TreeSet Allgemeine Java-Themen 4
A Effizienzfrage bei TreeSet / XML-Verarbeitung Allgemeine Java-Themen 8
C TreeSet mit Objekten befüllen Allgemeine Java-Themen 12
J TreeSet und Comparator will nicht so wie ich Allgemeine Java-Themen 2
J unsortiertes Treeset Allgemeine Java-Themen 2
J TreeSet neues TreeSet aufbauen Allgemeine Java-Themen 8
S Verhalten der Klasse TreeSet... Allgemeine Java-Themen 4
S TreeSet benötigt zu viel Speicher Allgemeine Java-Themen 5
André Uhres BigDecimal in HashSet eingefügt, aber nicht in TreeSet Allgemeine Java-Themen 2
M TreeSet exception bei add Allgemeine Java-Themen 17
E Statt HashSet die TreeSet verwenden Allgemeine Java-Themen 4
G TreeSet ändert sich bei Änderungen nicht! Allgemeine Java-Themen 15
M Fehler in TreeSet.remove() Allgemeine Java-Themen 6
B String Array aus TreeSet Allgemeine Java-Themen 6
T TreeSet neu sortieren Allgemeine Java-Themen 4
Neumi5694 Datentypen ArrayList vs TreeMap Allgemeine Java-Themen 6
G treeMap.putall funktioniert nicht?! Allgemeine Java-Themen 2
G mittleres Element aus TreeMap Allgemeine Java-Themen 5
G Datentypen TreeMap nach Color sortiert (kd-Baum) Allgemeine Java-Themen 8
J Vorsortieren für TreeMap Allgemeine Java-Themen 7
W Comparator oder TreeMap? Allgemeine Java-Themen 10
C Reihenfolge einer SortedMap/TreeMap umkehren Allgemeine Java-Themen 3
D Probleme beim schreiben / lesen in TreeMap Allgemeine Java-Themen 9
B TreeMap Index !!! Allgemeine Java-Themen 6
J Eindeutige ID für Objekte als Keys in TreeMap Allgemeine Java-Themen 12
P Große Datenmenge wie speichern (HashMap? TreeMap?) Allgemeine Java-Themen 11
T TreeMap durch Comparator mit Generics sortieren Allgemeine Java-Themen 9
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
T [TreeMap] Corresponding value to a key Allgemeine Java-Themen 10
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
J In einem Set doppelte Elemente erzeugen Allgemeine Java-Themen 4
Sogomn Best Practice "Doppelte" Methoden Allgemeine Java-Themen 3
L Doppelte eintraege im Stringbuffer löschen Allgemeine Java-Themen 4
J Doppelte Buchstaben löschen - letztes Wort macht er nicht Allgemeine Java-Themen 2
A List<String> auf doppelte Einträge überprüfen Allgemeine Java-Themen 4
F Doppelte Datensätze zusammenführen Allgemeine Java-Themen 12
Q "Doppelte" Einträge einer Liste entfernen Allgemeine Java-Themen 14
S Doppelte Werte in Listen,Vectoren etc suchen Allgemeine Java-Themen 2
R Vererbung - doppelte Paint-Methode Allgemeine Java-Themen 4
A ArrayListe :Doppelte entfernen -> keine Referenzen Allgemeine Java-Themen 26
D Geht es auch schneller doppelte Einträge zu löschen? Allgemeine Java-Themen 23
m@nu doppelte daten im speicher? Allgemeine Java-Themen 2
F [TableModel] Doppelte einträge finden (bzw. verhindern) Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben