# HashMap methoden



## newbie2009 (12. Jan 2010)

hey leute hier eine kurze Frage zu Hash.Map


```
if (woerter.containsKey(z)) {
						System.out.println(woerter.get(z));
```

so kann ich mir zu dem key z den value wert ausgeben lassen;
wie kann ich das andersrum machen, zum bestimmten value wert , einen bestimmten key wert ausgeben?
die get methode setzt das ja nur für die erste Richtung um!!!

Vielen Dank


----------



## Gastredner (12. Jan 2010)

Gar nicht. Es ist ja auch nicht Sinn der Sache, sich den Key zu einem Wert geben zu lassen.
Du könntest dir lediglich durch entrySet() ein Set von Key-Value-Entrys zurückgeben lassen - die in diesen Entries gespeicherten Werte kannst du dann mit deinem Vergleichen und so an den entsprechenden Schlüssel kommen.


----------



## Landei (12. Jan 2010)

Google Collections oder Apache Commons Collections bieten bidirektionale Maps, die das können:

BidiMap (Commons Collections 4.01 API)
BiMap.java - google-collections - Project Hosting on Google Code


----------



## newbie2009 (13. Jan 2010)

also kann ich das mit HashMap vergessen, weil es nur eine richtung unterstüzt 
Dann wird mein Wörterbuch wohl nur in eine RIchtung funktionieren , weil das Programm auf der Grundlage des Packages HashMap funzen soll


----------



## eRaaaa (13. Jan 2010)

Mhm, naja, funktionieren tut das schon irgendwie, nur halt nicht im Sinne einer Map 


```
public static void main(String... args) {
	Map<String, String> dictionary = new HashMap<String, String>();
	dictionary.put("welt", "world");

	String search1 = "welt";
	String search = "world";
	// deutsch - englisch
	System.out.println(search1 + " = " + dictionary.get(search1));

	// englisch - deutsch
	for (Entry<String, String> string : dictionary.entrySet()) {
	    if (string.getValue().equals(search)) {
		System.out.println(search + " = " + string.getKey());
		break;
	    }
	}
    }
```


----------



## SlaterB (13. Jan 2010)

häufig hat man auch eine Map<Id,UserObject>, 
und ein Value, ein UserObject enthält auch die Id, ob nun int, String oder Long 

bei dieser Konstruktion braucht man die zweite Richtung nicht


----------



## Gorac (13. Jan 2010)

eine hashmap ist für ein wörterbuch eh nicht geeignet, weil jeder key nur einmal vorkommen darf. da der key in deinem fall ja das englische wort ist, gibt es probleme, wenn ein englsiches wort mehrere deutsche bedeutungen hat.


----------



## bygones (13. Jan 2010)

Gorac hat gesagt.:


> eine hashmap ist für ein wörterbuch eh nicht geeignet, weil jeder key nur einmal vorkommen darf. da der key in deinem fall ja das englische wort ist, gibt es probleme, wenn ein englsiches wort mehrere deutsche bedeutungen hat.



[c]Map<String, Collection<String>>[/c] ??


----------



## Landei (13. Jan 2010)

Damit wären wir dann bei MultiMaps. Ob es die auch bidirektional gibt


----------

