Iterator und HashMap

Status
Nicht offen für weitere Antworten.
R

RalU

Gast
Hallo!
Wenn neue Wertepaare in einer Hashmap angelegt werden (mit hachmap.add(Key, value), dann werden diese Wertepaare leider nicht der Reihe nach angelegt, sondern sie befinden sich dann in der HashMap "kunterbund" verteilt wieder.
Wenn ich nun über diese HashMap mit einem Iterator z.B. mit keySet iterieren möchte, erhalte ich natürlich Nullpointer-Exceptions.
Welche Möglichkeiten habe ich, ohne Exception-Handling mir alle HashMap-Wertepaare ansehen zu können? Oder ist es sogar möglich, die Werte der Reihe nach anzulegen, so dass danach ohne Probleme darüber iteriert werden kann?
Vielen Dank für Eure Hilfe!
 
S

SlaterB

Gast
die Reihenfolge der Einträge ist nicht festgelegt, weder in der Map noch im KeySet,

du kannst das keySet in eine Liste tun und sortieren lassen wenn du das möchtest, dafür müssen die Key vergleichbar sein (Interface Comparable) oder du gibts einen spztiellen Comparator beim Sortieren mit an,

das hat mit der eigentlichen Aufgabe der HashMap aber nix zu tun,
da kann man nix vorher angeben,
vielleicht interessiert dich eher die Klasse TreeMap, die ist auch ne Map, arbeitet aber ohne Hash sondern mit Sortierung der Keys

allerdings nach deren interner Sortierung (Interface Comparable), nicht etwa nach Reihenfolge des Einfügens oder was immer du genau haben willst

--------------

allgemein gilt: wieso sollte die vorhandene oder nicht vorhandene Sortierung der Keys etwas mit Exceptions zu tun haben?
ich sehe da keinen Zusammenhang, es gibt bei mir nie Probleme "ohne Exception-Handling [..] alle HashMap-Wertepaare ansehen zu können"
 
B

Beni

Gast
Wieso erhaelst du NullPointer wenn du ueber das KeySet iterierst? Da sind nur Keys drin, die du mal hinzugefuegt hast...

Zur Reihenfolge: die LinkedHashMap kann das.
 

SamHotte

Top Contributor
Hi,

1. eigentlich sollte es bei HashMap.keySet() keine NullPointerExceptions geben.
2. wenn du eine Sortierung brauchst, z. B. aufsteigende Nummerierung oder alphabetisch, dann könntest du eine TreeMap verwenden; die kann man auch im nachhinein aus einer beliebigen Map erzeugen.
 
G

Gast

Gast
hallo zusammen ich habe das folgende problem
ich möchte gerne einen text in einer HashMap speichern
der text ist schon in wörten zerlegt
in der Regel speichert man schlüssel und werte zusammen
meine Frage jetzt ist soll ich jedes wort alleine reinschreiben?wenn nicht könnte ihr mir sagen wie ich das machen kann
Danke
 
S

SlaterB

Gast
du kannst jedes Wort einzeln reinschreiben, alle zusammen, bunt gemischt oder den Computer gar nicht erst einschalten,

wenn du kein Ziel hast, welches du damit verfolgst, sind alle Vorgehensweisen gleich (nutzlos)

also beschreibe erstmal, was du bezweckst, dann kann man die Vorgehensweise bewerten
 
G

Guest

Gast
bitte um Entschuldigung für das "test"

Ich habe ein ähnliches Prob wie der Gast vor mir; In einer Hashmap gespeichert: key = String, value = Double;
Will nun irgendwie nach dem Double-Wert sortieren, ohne die Zuordnung von value zu key verlieren;
Mit HashMapName.values() bekomme ich eine Collection von Values zurück (Verbindung zu den Keys bleibt bestehen, wenn ich das richtig verstanden habe). Collections.sort() kann ich darauf leider nicht anwenden, da sort eine List als Param erwartet. Wenn ich die values() aber in eine List packe, kann ich sie zwar sortieren, aber das bringt mir ja nix, da die Keys(die Strings) aus der ursprünglichen Hashmap nicht mitsortiert werden;

Das einzige was mir nun einfallen würde, wäre:

1. ursprüngliche Hashmap in eine TempHashmap kopieren
2. max value aus TempHashMap auslesen (mit Collections.max(TempHashMap.values())
3. den zugehörigen Key (/die zugehörigen Keys) auslesen (hier scheiterts schon - wie kommt man von value auf key(s)?)
4. in eine neue Struktur packen, die in der Reihenfolge des Hinzufügens abspeichert.
5. zugehörige Keys zum (alten) max value löschen
repeat

Abgesehen von dem value->key(s) Problem kommt mir das extremst unperformant vor (bei ner Hashmap mit mehreren 1000(0) Einträgen z.b.)

Ich habe schon einge Tips mit dem Comparable Interface bekommen, die ich persönlich aber nicht anwenden kann, da bei mir das grösste Prob ist, das ich nicht über die keys, sondern über die values sortieren muss - stellt euch das so vor: Key/String = Mitarbeitername ; Value/Double = Gehalt - wie sortiert man die Liste nun nach dem Gehalt und gibt z.b. die 10 Bestverdiener aus?

Dankbar wäre ich v.a. nicht unbedingt für ein fix und fertiges Codesnippet, sondern für einen "Schubs" / Tip in die richtige Richtung.
 
S

SlaterB

Gast
map.entrySet liefer dir Entry-Objekte mit Key/ Value
(wenns das nicht gäbe würde man es schnell selber schreiben)

dieses Set in eine Liste umwandeln und mit passenden Comparator sortieren

---------

> nach dem Double-Wert sortieren, ohne die Zuordnung von value zu key verlieren

wozu überhaupt? die Values sind doch unabhängig von den Keys,
ein Value kann zu mehreren Keys vorkommen,
wenn du dir die Values anschaust, warum interessieren dich dann noch die Keys?
das klingt dann ja eher nach einer noch fehlenden umgekehrten Map

Value -> Liste von Keys zu diesem Value

---------

> stellt euch das so vor: Key/String = Mitarbeitername ; Value/Double = Gehalt -

das klingt eher nach
String name -> Person-Objekt mit Name + Gehalt zusammen
 
M

maki

Gast
Gast "2",

schon mal einen Blick auf die TreeMap des Collection Frameworks geworfen? ;)
 
G

Guest

Gast
SlaterB hat gesagt.:
> stellt euch das so vor: Key/String = Mitarbeitername ; Value/Double = Gehalt -

das klingt eher nach
String name -> Person-Objekt mit Name + Gehalt zusammen

Genau so werde ich das dann auch umsetzen, ein bischen lesen hier im Forum und ein Tip eines Freundes haben geholfen

Statt String/Double Hashmap einfach ne List<Person>, Person bekommt Name + Gehalt als Eigenschaft und implementiert Comparator.
Damit lösen sich dann die o.a. Probs allesamt in Luft auf.
Jetzt, wo ichs weiss klingts unglaublich einfach und unfassbar das ich da net vorher drauf gekommen bin ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
N HashMap mit Iterator durchlaufen Java Basics - Anfänger-Themen 11
N generische HashMap und Iterator Java Basics - Anfänger-Themen 2
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
N Kann man einen Iterator nur einmal verwenden Java Basics - Anfänger-Themen 5
N Warum Springt iterator nur in der Schleife weiter Java Basics - Anfänger-Themen 9
volcanos HashSet und Iterator -> Falsche Sortierreihenfolge ? Java Basics - Anfänger-Themen 18
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
J Methoden iterator for-schleife (hasNext() ) Java Basics - Anfänger-Themen 7
Stargirlxo Iterator + Methode Java Basics - Anfänger-Themen 10
G Java Listen und Iterator Java Basics - Anfänger-Themen 2
F nur das erste Element mit iterator ausgeben Java Basics - Anfänger-Themen 5
O Iterator erneut! Java Basics - Anfänger-Themen 8
O Iterator für eine geordnete Menge Java Basics - Anfänger-Themen 134
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
K Iterator zurückliefern Java Basics - Anfänger-Themen 8
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
S Iterator einer Liste Java Basics - Anfänger-Themen 4
B Sortieren mit Iterator Java Basics - Anfänger-Themen 4
I Erste Schritte Iterator Java Basics - Anfänger-Themen 3
M Iterator funktioniert nicht Java Basics - Anfänger-Themen 5
M Iterator cannot refer to a non final... Java Basics - Anfänger-Themen 20
O Interface Iterator Java Basics - Anfänger-Themen 2
M Collections Frage Beispielprogrammierung Iterator Java Basics - Anfänger-Themen 13
M Iterator Java Basics - Anfänger-Themen 25
J Iterator Funktioniert nicht richtig in StackImplementierung Java Basics - Anfänger-Themen 3
L Iterator Java Basics - Anfänger-Themen 1
K Nutzung einer Klasse die das Iterator-Interface implementiert Java Basics - Anfänger-Themen 0
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
M Collections Iterator und generischer Baum Java Basics - Anfänger-Themen 0
O Kleine Frage zu Iterator und Iterable Java Basics - Anfänger-Themen 6
OnDemand Iterator Interfacve Java Basics - Anfänger-Themen 23
S Iterator next() Nullpointer Java Basics - Anfänger-Themen 2
T Methoden Iterator über ArrayList Java Basics - Anfänger-Themen 3
W Iterator Java Basics - Anfänger-Themen 2
D Aufgabe: Stack mit Iterator Java Basics - Anfänger-Themen 8
R Mit iterator auf Element zugreifen Java Basics - Anfänger-Themen 2
T Collections Zugriff auf Elemente aus Iterator() Schleife Java Basics - Anfänger-Themen 4
P Casting Warning bei Iterator Java Basics - Anfänger-Themen 32
F Wie Werte einer ArrayList an einen 'Custom'-Iterator übergeben? Java Basics - Anfänger-Themen 2
J Iterator Java Basics - Anfänger-Themen 5
P ArrayList mit Iterator / Iterable ausgeben Java Basics - Anfänger-Themen 8
B Funktionsweise Iterator unklar Java Basics - Anfänger-Themen 7
A Datentypen Iterator von hinten nach vorne durchlaufen Java Basics - Anfänger-Themen 4
D Wie Iterator Remove implementieren? Java Basics - Anfänger-Themen 11
B Datentypen Inhalt zum Iterator wieder aufrufen? Java Basics - Anfänger-Themen 10
D Iterator schaltet nicht weiter?! Java Basics - Anfänger-Themen 5
A Problem mit Iterator Java Basics - Anfänger-Themen 2
B Türme von Hanoi - Iterator Java Basics - Anfänger-Themen 50
V Hilfe beim implementieren von Iterator Java Basics - Anfänger-Themen 5
W Collections Iterator<E> Java Basics - Anfänger-Themen 7
L Lokale Variable und Instanzvariable innerhalb Iterator Java Basics - Anfänger-Themen 8
W OOP problem mit iterator! -.- Java Basics - Anfänger-Themen 9
B Iterator und Collection Java Basics - Anfänger-Themen 11
ruutaiokwu Iterator oder .size ??? Java Basics - Anfänger-Themen 6
vandread Iterator zählt nicht hoch?! Java Basics - Anfänger-Themen 3
L Problem mit Iterator bzw. Sortierte Liste Java Basics - Anfänger-Themen 14
R Iterator Liste, Verständnisproblem Java Basics - Anfänger-Themen 4
J Verschachtelte for-Schleife mit Löschen von Iterationen. Wie über Iterator abbilden? Java Basics - Anfänger-Themen 6
M Iterator Java Basics - Anfänger-Themen 15
L Implementation gesucht - ArrayList.iterator() Java Basics - Anfänger-Themen 3
M Eigener Iterator für LinkedList Java Basics - Anfänger-Themen 20
pun Iterator über ArrayList Java Basics - Anfänger-Themen 12
P Iterator.add() Java Basics - Anfänger-Themen 3
A For Schleife - Iterator wird null Java Basics - Anfänger-Themen 7
? Map und iterator Java Basics - Anfänger-Themen 11
0x7F800000 ungereimtheiten mit Iterator/ListIterator Java Basics - Anfänger-Themen 2
N "Dynamischer" Iterator Java Basics - Anfänger-Themen 21
J Iterator remove()? Java Basics - Anfänger-Themen 5
T Liste mit Iterator auslesen Java Basics - Anfänger-Themen 11
Kr0e Iterator Java Basics - Anfänger-Themen 2
D iterator instanziieren! Java Basics - Anfänger-Themen 11
M Der Umgang mit Iterator - Wie ein Objekt aus einer ArrayList Java Basics - Anfänger-Themen 2
J ArrayList mit Iterator Java Basics - Anfänger-Themen 3
W Iterator in Queue Java Basics - Anfänger-Themen 5
A Für was Iterator ? Java Basics - Anfänger-Themen 3
M warum interface iterator verwendbar? Java Basics - Anfänger-Themen 5
O Iterator - Durchlauf "einschränken" bzw. steuern&q Java Basics - Anfänger-Themen 2
K Collection und Iterator Java Basics - Anfänger-Themen 7
Q Iterator next erstellen Java Basics - Anfänger-Themen 4
S iterator problem Java Basics - Anfänger-Themen 3
S Iterator --__-- Zugriff auf nächstes Element Java Basics - Anfänger-Themen 5
N Set + Iterator oder doch nur zu blöd API zu lesen Java Basics - Anfänger-Themen 32
R Java 5.0 neue For schleife Iterator was ist der fehler? Java Basics - Anfänger-Themen 5
G Probleme mit Iterator Java Basics - Anfänger-Themen 2
E umgededrehte if anweisung funzt nicht , iterator. Java Basics - Anfänger-Themen 2
A Iterator, wie funkioniert das richtig? Java Basics - Anfänger-Themen 6
S Iterator Schreibweise Java Basics - Anfänger-Themen 7
P ArrayList, iterator: Fehler in while Schleife Java Basics - Anfänger-Themen 2
T Iterator Java Basics - Anfänger-Themen 8
G Frage zur Iterator ? Java Basics - Anfänger-Themen 12
A Iterator auf anfang setzen Java Basics - Anfänger-Themen 5
blackfeet Bildfadeffekt (Halptransparenz) & iterator Java Basics - Anfänger-Themen 8
C Problem mit verschachteltem Iterator Java Basics - Anfänger-Themen 2
R Problem mit Iterator Java Basics - Anfänger-Themen 6
M Problem mit Iterator.remove() Java Basics - Anfänger-Themen 5
R Enumeration oder Iterator? Java Basics - Anfänger-Themen 2
J Klasse Iterator Java Basics - Anfänger-Themen 5
D unregelmäßige NullPointerException bei LinkedList Iterator? Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben