# Generics Hashtable mit "neuer" for-Schleife ausles



## siba (25. Nov 2005)

Hallo!

Gerade versuche ich eine generische Hashtable mit der "neuen" erweiterten (?) auszulesen, aber irgendwie gelingt es mir nicht! Was mache ich falsch?



```
import java.util.Hashtable;

public class GenericsHashtable {
	public static void main(String[] args) {
		String s1 = "1";
		String s2 = "2";
		String w1 = "hallo";
		String w2 = "bye";
	
		Hashtable<String, String> h = new Hashtable<String, String>();	
		h.put(s1, w1);
		h.put(s2, w2);
		
		for (String s:h) {	
			System.out.println("Schlüssel: " + h );
			System.out.println("Wert: " + s.get(h) );
		}		
	}
}
```


----------



## bygones (25. Nov 2005)

Generics sind toll und nehmen einenm wahnsinnig viel ab, doch alles leider auch nicht 


```
for(String s : h)
```
 geht nicht. Man kann die neue for Schleife nur über Instanzen vom Typ Iterable laufen lassen. Hashtable an sich ist nicht von dem Typ Iterable. Du kannst dir es auch so vorstellen - woher soll java wissen über wass du iterieren willst.. über die entries / keys oder values ?

z.b. wenn du über die Entries laufen willst

```
for(Map.Entry<String,String> entry : h.entrySet())
```
über die keys

```
for(String key : h.keySet())
```
 usw


----------



## siba (25. Nov 2005)

Merci! Letzteres funktioniert hervorragend! Aber die erste Version gibt einen Kompilierfehler warum?


```
for(String key : h.keySet()){
    System.out.println("Schlüssel: " + key );
    System.out.println("Wert: " + h.get(key) );
}
		
for(Map.Entry<String,String> entry : h.entrySet()){
			
//Kompilierfehler: Map cannot be resolved to a type und type mismatch
}
```


----------



## Beni (25. Nov 2005)

Wahrscheinlich hast du kein Import für "java.util.Map" gemacht?


----------



## siba (25. Nov 2005)

That's it!


----------

