# Über HashMap iterieren -> NullPointerException



## PHANTOMIAS (31. Mai 2009)

Hallo an alle!

Ich habe eine Klasse mit einer HashMap über die ich nachdem sie gesetzt ist iterieren will. Ich habe das so gemacht:


```
import java.math.BigInteger;
import java.util.HashMap;

public class Test {
	private HashMap<BigInteger,BigInteger> testHashMap;

	Test() {
		init();
	}
	
	private void init() {
		HashMap<BigInteger, BigInteger> testHashMap = new HashMap<BigInteger, BigInteger>();
		testHashMap.put(new BigInteger("0000", 2), new BigInteger("0001", 2));
		testHashMap.put(new BigInteger("0001", 2), new BigInteger("0100", 2));
		// Das funktioniert
		for(BigInteger elem : testHashMap.keySet()) {
			System.out.println(elem.toString(2));
		}
	}

	public void doSomething() {
		// Das nicht
		for(BigInteger elem : testHashMap.keySet()) {
			System.out.println(elem.toString(2));
		}
	}

	public static void main(String[] args) {
		Test testObj = new Test();
		testObj.doSomething();
	}
}
```

Rufe ich es auf, so gibt das Drüberlaufen in der doSomething()-Methode eine NullPointerException. Wieso funktionieren die gleichen Codezeilen beim Initialisieren der HashMap, nicht aber hier?

Ausgabe:
PHANTOMIASesktop PHANTOMIAS$ java Test
1
0
Exception in thread "main" java.lang.NullPointerException
	at Test.doSomething(Test.java:21)
	at Test.main(Test.java:28)

Bin wohl nach langerer Java-Abstinenz nicht mehr allzu fit. Mir fällt nichts mehr ein, deswegen habe ich dieses Minimal-Beispiel zusammengestellt. Hat jemand eine Idee?

Danke + Gruß PHANTOMIAS


----------



## Landei (31. Mai 2009)

Du legst in init eine *neue* (lokale) Variable testHashMap an, die die MemberVariable verdeckt.

Die erste Zeile von init() muss so lauten:
testHashMap = new HashMap<BigInteger, BigInteger>();


----------



## PHANTOMIAS (31. Mai 2009)

Es ist Zeit für mein Bett 
10 andere Klassenvariablen habe ich richtig angelegt und bei der HashMap mache ich so etwas. Habe das echt nicht gesehen.

Jetzt funktioniert es natürlich...

Danke + Gruß PHANTOMIAS


----------

