HashMap-Problem

Status
Nicht offen für weitere Antworten.
T

TheoD

Gast
Hallo zusammen,

ich habe folgendes Problem....

ich habe mir wie folgt eine HashMap angelegt und diese dann gefüllt.

Code:
HashMap<Object a, Object b> = new HashMap<Object a, Object b>();

die Objekte besitzen folgende Attribute...

a(int i, String s, String st)
b(int ii, int iii, String str)

die hashMap kann ich nun auf dem Bildschirm ausgeben...

Code:
	public void print(){
		Iterator it = hm.entrySet().iterator();
		while (it.hasNext()){
		Map.Entry  entry = (Map.Entry)it.next();
		System.out.println(entry.getKey().toString() + 
				"--->" + entry.getValue().toString());
		}
	}

Bis dahin funktioniert alles wunderbar.
Wie kann ich jetzt aber nach einem Schlüssel suchen und dann den zugehörigen Wert ändern.
Im Netz finde ich nur immer Beispiele bei denen der Schlüssel ein String ist. Da brauche ich dann nur nach dem String zu suchen und kann dann den Wert ändern. Wie mache ich das aber bei Objekten?
Ich würde gerne ein Objekt a anhand eines Attributes finden (z.B. wenn int i = 5 ist) und dann im Objekt b etwas ändern.

Ich hoffe ich habe mein Problem einigermaßen verständlich ausgedrück :)
 

Bleiglanz

Gesperrter Benutzer
ja, und es geht nicht

erstens müssen deine Objekte equals und hashCode überschreiben

und wenn du einen Lookup nach einem Attribut des Keys machen willst, dann musst du

entweder eine zweite Map verwenden

oder (etwas langsamer)

durchs keySet iterieren und den richtigen Key finden, dann damit den Lookup machen
 
B

bygones

Gast
wo hast du gesucht ?

schau die API an... da du jedes Object als key verwenden kannst, kannst du auch mit diesen Objects per get() / containsKey() usw. nach den Werten suchen.

Einen Object als key, nach einem Attribut des Objekt zu suchen geht nicht (ohne komplettes iterieren)

mir erscheint dein komplette Map Struktur nicht logisch... warum Map<Object, Object>
und wenn du dann nach einem attribut suchst, warum nicht dieses attribut als key ?
 
T

TheoD

Gast
Erstmal Danke für Eure Antworten!

Wahrscheinlich habe ich wirklich irgendwo einen Denkfehler.
Am Anfang sah meine HashMap so aus...
Code:
HashMap<String, Integer> hm = new HashMap<String, Integer>();
wobei String ein Name war und Integer eine Telefonnummer. Da hat alles prima funktioniert. Ich konnte einen Namen eingeben und habe die Nummer ausgegeben bekommen.
Daraufhin wollte ich das Ganze etwas erweitern, sodass ich als Key Name und Vorname habe und als Wert die Nummer und Vorwahl usw.
Deswegen habe ich den Namen und die Nummer jeweils in Objekte gepackt.

Object a Name
Object b Telefonnummer

Und nun würde ich gerne wieder einen Namen (z.b. den Vornamen) eingeben und daraufhin alle passenden Einträge in der HashMap mit dazugehörigen Wert ausgegeben bekommen.

In einem anderen Thread hier im forum habe ich etwas über equals und hashCode gelesen. Ich habe dann im Objekt Name equals und hashCode überschrieben. Der HashCode richtet sich jetzt nach int i. int i soll einfach eine fortlaufende Nummer sein. Das hat auch funktioniert. Der jeweilige hashCode zum Objekt Name ist jetzt der Wert der fortlaufenden Nummer. Allerdings habe ich noch nicht so ganz verstanden was mir das bringt :wink:

Wenn das Ganze so wie ich mir das Vorstelle nicht funktionieren kann werde ich mal nach einer anderen Möglichkeit suchen. Ich würde allerdings schon gerne eine HashMap benutzen. So wie es aussieht habe ich die Sache mit der HashMap noch nicht richtig verstanden. Würde ich aber gerne :)
 
B

bygones

Gast
Nutze OOP und erstelle dir eine Klasse, die dir diese Informationen speichert.

equals und hashCode sollte immer implementiert werden, so dass alle Möglichen Collection / Map Speicherungen auch wirklich funktionieren
 
T

TheoD

Gast
Ich habe eine Klasse Name, eine Klasse Telefon und eine Klasse Telefonbuch.
In der Klasse Telefonbuch wird die HashMap<Name, Telefon> angelegt und gefüllt. In dieser Klasse hätte ich jetzt gerne eine Methode, die es erlaubt nach einem Key zu suchen.
Equals und hashCode habe ich in die Klasse Name gepackt.
 
B

bygones

Gast
dann kannst du über map.get(Name n) einen Namen suchen
 
T

TheoD

Gast
Das funktioniert so leider nicht. Ich gebe die Namen und Nummern über einen InputStreamReader ein.

ungefähr so...


Code:
	BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Name n = new name();
Telefon t = new Telefon();
String line1 = in.readLine();
n.setVorName(line1);
String line2 = in.readLine();
n.setName(line2);
        .
        .
        .
map.put(n, t);

Deswegen kann der mit map.get(Name n) nichts anfangen.
 
B

bygones

Gast
TheoD hat gesagt.:
Deswegen kann der mit map.get(Name n) nichts anfangen.
weswegen ?

du tust Objekte vom Typ Name als key in die map. Wenn diese Klasse equals bzw hashCode implementiert kannst du ohne Probleme über eine Instanz vom Typ Name den Wert in der Map holen, wenn dieser Schlüssel existiert
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E HashMap Problem Java Basics - Anfänger-Themen 5
M Semantisches Problem HashMap/Netzwerk Java Basics - Anfänger-Themen 4
W OOP problem mit HashMap Java Basics - Anfänger-Themen 7
H Problem mit HashMap Java Basics - Anfänger-Themen 2
T Problem mit Implementierung von einer HashMap aufgabe Java Basics - Anfänger-Themen 2
K Problem bei Hashmap Nutzung Java Basics - Anfänger-Themen 22
F Java Object to Hashmap ? Java Basics - Anfänger-Themen 6
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
krgewb HashMap Java Basics - Anfänger-Themen 2
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
berserkerdq2 Hashmap, wie prüfe ich ob ein Key schon existiert Java Basics - Anfänger-Themen 19
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
F gson mit einer Hashmap Java Basics - Anfänger-Themen 2
J JSON-HashMap Java Basics - Anfänger-Themen 3
J Hashmap Java Basics - Anfänger-Themen 13
C Hashmap zickt Java Basics - Anfänger-Themen 9
S HashMap contains() Methode Java Basics - Anfänger-Themen 1
Z Satz aufteilen und die Wörter zählen (HashMap) Java Basics - Anfänger-Themen 15
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
P Verschachtelte Hashmap Java Basics - Anfänger-Themen 6
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
J HashMap Java Basics - Anfänger-Themen 6
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
N HashMap in List good practice? Java Basics - Anfänger-Themen 2
K Value eines HashMaps in einer HashMap wiedergeben. Java Basics - Anfänger-Themen 5
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
O HashMap - ArrayList Java Basics - Anfänger-Themen 29
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
M Objekt mit Hashmap vergleichen Java Basics - Anfänger-Themen 22
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
J Hashmap auslesen Java Basics - Anfänger-Themen 7
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
shiroX Methoden Morse-Code Übersetzer mit HashMap Java Basics - Anfänger-Themen 5
P Hashmap anstatt LinkedList? Java Basics - Anfänger-Themen 6
T HashMap und die Methoden Java Basics - Anfänger-Themen 13
N Methoden Interaktives PDF mit HashMap befüllen Java Basics - Anfänger-Themen 0
Z Hashmap auseinandernehmen und analysieren Java Basics - Anfänger-Themen 7
B Durchlaufen von Hashmap und Arraylist Java Basics - Anfänger-Themen 8
F HashMap oder welches Array? Java Basics - Anfänger-Themen 4
T HashMap Java Basics - Anfänger-Themen 24
L Hashmap mit variablem Key Java Basics - Anfänger-Themen 9
M Collections Probleme mit Hashmap Java Basics - Anfänger-Themen 4
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
Z HashMap richtig benutzen Java Basics - Anfänger-Themen 2
lgund HashMap // TS3 Query Java Basics - Anfänger-Themen 7
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
E Hashmap Wert auslesen Java Basics - Anfänger-Themen 2
S Printstream für einen Hashmap Loop Java Basics - Anfänger-Themen 1
dat_vin OOP Hashmap und Attribute Java Basics - Anfänger-Themen 7
C Check ob eine HashMap schon existiert Java Basics - Anfänger-Themen 16
P Vererbung Eigene HashMap Variante Java Basics - Anfänger-Themen 2
R Hashmap in anderer Klasse nicht benutzbar Java Basics - Anfänger-Themen 1
T Java Hashmap Java Basics - Anfänger-Themen 3
L Gibt es etwas wie "HashMap <String, String, String> Java Basics - Anfänger-Themen 9
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
O HashMap Fragen Java Basics - Anfänger-Themen 8
T HashMap Werte einfügen, durchsuchen und auslesen Java Basics - Anfänger-Themen 17
D HashMap Keys durchlaufen Java Basics - Anfänger-Themen 2
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
M HashMap keys ausgeben Java Basics - Anfänger-Themen 2
S In einer Hashmap Klassen regestrieren Java Basics - Anfänger-Themen 2
H Collections Was ist schneller - HashMap + Sort v TreeMap? Java Basics - Anfänger-Themen 75
F HashMap nach kleinstem Value durchsuchen Java Basics - Anfänger-Themen 11
G HashMap Java Basics - Anfänger-Themen 6
F Wortpaare - HashMap - ArrayList Java Basics - Anfänger-Themen 6
M HashMap Frage Java Basics - Anfänger-Themen 3
M HashMap - put() reagiert nicht? Java Basics - Anfänger-Themen 8
N Cast eines Objektes in eine Hashmap Java Basics - Anfänger-Themen 13
A CSV Zeilenweise einlesen und in einer HashMap speichern Java Basics - Anfänger-Themen 12
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
F Hilfe bei der HashMap. Java Basics - Anfänger-Themen 3
F HashMap vs. TreeMap Java Basics - Anfänger-Themen 5
B HashMap Java Basics - Anfänger-Themen 9
C Collections String[] als value in HashMap Java Basics - Anfänger-Themen 6
V Hashmap Iterieren Java Basics - Anfänger-Themen 4
C Csv File in Hashmap ausgeben Java Basics - Anfänger-Themen 14
T HashMap<String,Object> Werte auslesen Java Basics - Anfänger-Themen 5
I HashMap sortieren Java Basics - Anfänger-Themen 10
I HashMap Java Basics - Anfänger-Themen 11
H Collections Brauche modifizierte HashMap Java Basics - Anfänger-Themen 6
H TreeMap/HashMap synchronisieren Java Basics - Anfänger-Themen 2
A Datentypen Hashmap to Array Java Basics - Anfänger-Themen 11
D HashMap überschreibt Werte Java Basics - Anfänger-Themen 7
pg1337 Interface Comparable-Interface bei HashMap Java Basics - Anfänger-Themen 21
D erweiterte hashmap Java Basics - Anfänger-Themen 5
H HashMap<Int, String> - Er findet die Int-Klasse nicht. Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben