首先argruement我有一個HashMap有兩個參數,For循環 - HashMap的
private HashMap<Integer, car> carList;
我已經成功地寫,讓我把新的值HashMap中的方法。 現在我想知道如何使用for循環或類似於我的Hashmap的第一個參數來迭代類似的事情。我試圖列出所有具有相同的int值(價格)的汽車;
首先argruement我有一個HashMap有兩個參數,For循環 - HashMap的
private HashMap<Integer, car> carList;
我已經成功地寫,讓我把新的值HashMap中的方法。 現在我想知道如何使用for循環或類似於我的Hashmap的第一個參數來迭代類似的事情。我試圖列出所有具有相同的int值(價格)的汽車;
的keySet()
方法可以讓你遍歷映射鍵...
for(Integer price: carList.keySet()) {
// something
}
如果我想參考第二個論證(汽車對象),我該怎麼做? – user1692517 2013-03-14 12:13:27
沒關係,明白了:)謝謝! – user1692517 2013-03-14 12:15:21
可以使用KeySet()方法。
從文檔:
返回包含在此映射中鍵的Set視圖。該集合由地圖支持,因此對地圖的更改反映在集合中,反之亦然。如果在對集合進行迭代的過程中修改了映射(除了通過迭代器自己的刪除操作),迭代的結果是未定義的。該集支持元素刪除,通過Iterator.remove,Set.remove,removeAll,retainAll和clear操作從映射中刪除相應的映射。它不支持add或addAll操作。
。
我想列出所有具有相同的int值(價格)的汽車;
以價格爲關鍵是錯誤的設計。您可以將範圍對象設爲Key。即價格範圍。
這樣做:
for(Integer price: carList.keySet()) {
car myCar = carList.get(price);
}
哇,我覺得更容易。我正在看其他SOF的答案,他們似乎很激烈。如果我想檢查第二個參數,我會使用mapSet而不是keySet嗎? – user1692517 2013-03-14 12:08:30
沒有第二個參數不一定是一組(即沒有重複),因爲你可以有兩個不同的鍵相同的值。在大多數情況下,我在迭代地圖時使用上面的代碼。但是如果你真的只是想遍歷這些值,使用'values()'。 – mprivat 2013-03-14 12:15:55
要從地圖上被(你的情況Integer
)鍵檢索值如下:
carList.get(<your price>) --> this will get your the value(s) for this price
遍歷所有的價格,這樣做:
for(Integer price: carList.keySet()) {
.. your work
}
首先,將變量名更改爲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>>
我是否正確理解您的地圖關鍵是價格? – NPE 2013-03-14 12:06:13