2012-09-02 44 views
0

如何從HashMap打印ArrayList?如何迭代HashMap <String,ArrayList <Car>>

Map<String, ArrayList<Car>> cars = new HashMap<String, ArrayList<Car>>; 

ArrayList<Car> carList = cars.get("bmw"); 

    for (int i = 0; i < carList.size(); i++) { 
     System.out.println(carList.get(i)); 
    } 

代碼導致:

java.lang.NullPointerException 

儘管 「寶馬」 鍵存在並且被填充。

+1

什麼行引發NPE? –

+0

爲什麼不使用'iterator'? – alfasin

+0

比'iterator'好得多的是for循環(假設您使用的是JDK 1.5或更高版本)。 – Vikdor

回答

1

嘗試在

System.out.println(cars.get("bmw")); 

增加檢查,看看到底是什麼在它(在地圖,和汽車的ArrayList中)。

+0

呃..關鍵應該以大寫字母開頭。謝謝:) – lunar

+0

@lunar Yup,高興地幫助:) –

1
Iterator<String> itr = carList.iterator(); 
    while (itr.hasNext()) { 
     String element = itr.next(); 
     System.out.print(element + " "); 
    } 

Inoder做這個carList不應該是一個空值。
要添加值ArrayList中,你可以使用

carList.add("Some value"); 
0

,最簡單的方式,通過列表迭代是使用的foreach:

ArrayList<Car> carList = cars.get("bmw"); 
for (Car car : carList) { 
    System.out.println(car.getYourValueToPrint()); 
} 
0

最安全的方式來遍歷ArrayList的將通過加強對各環這樣可以節省一NullPointerException的痛苦:

ArrayList<Car> carList = cars.get("bmw"); 
for(Car car: carList){ 
    car.doAnyOpertation(); 
    System.out.println(car.getAnyValue()); 
} 
0
ArrayList<Car> carList = cars.get("bmw"); 
for(Car car: carList){ 
    car.doAnyOpertation(); 
    System.out.println(car.getAnyValue()); 
} 

即使在此情況下,如果carList爲空,那麼行
for(Car car: carList)與丟NPE

相關問題