2013-03-14 67 views
0

首先argruement我有一個HashMap有兩個參數,For循環 - HashMap的

private HashMap<Integer, car> carList; 

我已經成功地寫,讓我把新的值HashMap中的方法。 現在我想知道如何使用for循環或類似於我的Hashmap的第一個參數來迭代類似的事情。我試圖列出所有具有相同的int值(價格)的汽車;

+1

我是否正確理解您的地圖關鍵是價格? – NPE 2013-03-14 12:06:13

回答

1

keySet()方法可以讓你遍歷映射鍵...

for(Integer price: carList.keySet()) { 
    // something 
} 
+0

如果我想參考第二個論證(汽車對象),我該怎麼做? – user1692517 2013-03-14 12:13:27

+0

沒關係,明白了:)謝謝! – user1692517 2013-03-14 12:15:21

0

可以使用KeySet()方法。

從文檔:

返回包含在此映射中鍵的Set視圖。該集合由地圖支持,因此對地圖的更改反映在集合中,反之亦然。如果在對集合進行迭代的過程中修改了映射(除了通過迭代器自己的刪除操作),迭代的結果是未定義的。該集支持元素刪除,通過Iterator.remove,Set.remove,removeAll,retainAll和clear操作從映射中刪除相應的映射。它不支持add或addAll操作。

我想列出所有具有相同的int值(價格)的汽車;

以價格爲關鍵是錯誤的設計。您可以將範圍對象設爲Key。即價格範圍。

1

這樣做:

for(Integer price: carList.keySet()) { 
    car myCar = carList.get(price); 
} 
+0

哇,我覺得更容易。我正在看其他SOF的答案,他們似乎很激烈。如果我想檢查第二個參數,我會使用mapSet而不是keySet嗎? – user1692517 2013-03-14 12:08:30

+0

沒有第二個參數不一定是一組(即沒有重複),因爲你可以有兩個不同的鍵相同的值。在大多數情況下,我在迭代地圖時使用上面的代碼。但是如果你真的只是想遍歷這些值,使用'values()'。 – mprivat 2013-03-14 12:15:55

0

要從地圖上被(你的情況Integer)鍵檢索值如下:

carList.get(<your price>) --> this will get your the value(s) for this price 

遍歷所有的價格,這樣做:

for(Integer price: carList.keySet()) { 
    .. your work 
} 
0

首先,將變量名更改爲carMap。 現在,你可以使用下列之一:

for(Integer price: carMap.keySet()) { 
    // something related to key. 
} 

或:

for(Entry<Integer,car> entry: carMap.entrySet()) { 
    car c = entry.getValue(); 
    Integer ket = entry.getKey(); 
    // something related to key and value. 
} 

但是,如果關鍵是價格,你持有每價格一個車,你不能有兩輛車價格相同。 您可能想要使用:

Map<Integer, List<car>>