0

我有一个带有两个参数的哈希图,

private HashMap<Integer, car> carList;

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

4

5 回答 5

1

keySet()方法将允许您遍历映射键...

for(Integer price: carList.keySet()) {
    // something
}
于 2013-03-14T12:05:23.347 回答
1

做这个:

for(Integer price: carList.keySet()) {
    car myCar = carList.get(price);
}
于 2013-03-14T12:06:34.827 回答
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>>
于 2013-03-14T12:08:58.313 回答
0

您可以使用KeySet()方法。

从文档:

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

.

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

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

于 2013-03-14T12:06:29.990 回答
0

通过键(Integer在您的情况下)从地图中检索值如下:

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

要遍历所有价格,请执行以下操作:

for(Integer price: carList.keySet()) {
   .. your work
}
于 2013-03-14T12:07:07.733 回答