for循环 - HashMap的第一个问题

时间:2013-03-14 12:04:14

标签: java hashmap loops

我有一个带有两个参数的hashmap,

private HashMap<Integer, car> carList;

我已经成功编写了允许我在HashMap中添加新值的方法。 现在我想知道如何使用for循环或类似的东西来迭代我的Hashmap的第一个争论。我正在尝试列出所有具有相同int值(价格)的汽车;

5 个答案:

答案 0 :(得分:1)

keySet()方法将允许您迭代地图键...

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

答案 1 :(得分:1)

这样做:

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

答案 2 :(得分:0)

您可以使用KeySet()方法。

来自文档:

  

返回此地图中包含的键的Set视图。该集由地图支持,因此对地图的更改将反映在集中,反之亦然。如果在对集合进行迭代时修改了映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的。该集支持元素删除,它通过Iterator.remove,Set.remove,removeAll,retainAll和clear操作从地图中删除相应的映射。它不支持add或addAll操作。

  

我正在尝试列出所有具有相同int值(价格)的汽车;

以价格为关键是错误的设计。你可以将一个范围对象作为Key。即价格范围。

答案 3 :(得分:0)

要按键(在您的案例中为Integer)从地图中检索值,请执行以下操作:

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

要迭代所有价格,请执行以下操作:

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

答案 4 :(得分: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>>