# HashMap durchlaufen mit Iterator



## Kaffeebohne (28. Apr 2005)

```
// configuration ist eine HashMap

Iterator iterator = configuration.entrySet().iterator();
while(iterator.hasNext()) {
    key = iterator.next().toString();
    val = configuration.get(key).toString();
    // weiterverabeitung der Werte...
}
```

Das wird aber mit einer nullPointerException quittiert, da bei next() das key/value Paar geliefert wird.

 Ich habe aber im Debugger gesehen, das es sich hierbei nur um den HashMap Entry handelt. Wie komme ich an key / value?

Ausserdem hab ich gesehen, dass die Methode eigentlich current() heissen sollte, oder=?


----------



## DP (28. Apr 2005)

hier mal ein beispiel von mir:


```
while (it.hasNext()){
      UserBean ub = (UserBean)this.lkw_users.get(it.next());
}
```

wobei lkw_users die hashmap ist...

cu
[/code]


----------



## stev.glasow (28. Apr 2005)

```
Map.Entry e = (Map.Entry)iterator.next();
key = (KeyClass)e.getKey();
val = (ValueKlass)e.getValue();
```

Oder so ähnlich.


----------



## Sky (28. Apr 2005)

Oder einfach:

```
Iterator iterator = configuration.keySet().iterator();
```


----------



## DP (28. Apr 2005)

stevg hat gesagt.:
			
		

> Oder so ähnlich.



*geil*


----------



## stev.glasow (28. Apr 2005)

Wieso?
Das ding läuft so, man muss nur anders Casten oder mit Generics arbeiten (deswegen hab ich's gesagt). Es läuft auf jeden Fall schneller als sich die Schlüssel über den Iterator und die werte dann über die get zu holen. Behaubte ich jetzt mal.

Mal übersichtshalber:

Werte holen:
Iterator i = mymap.values().iterator();


Schlüssel holen
Iterator i = mymap.keySet().iterator();


Schlüssel-Werte Paare holen:
Iterator i = mymap.entrySet().iterator();
und dann immer
Map.Entry e = (Map.Entry) i.next();
Schlüssel s = (Schlüssel)s.getKey();
Wert w = (Wert)e.getValue();


----------

