我有一个方法,我用它来计算hashmap中的项目:
public void getAvailable(final Item item) {
System.out.println("\n" + "Item's \"" + item.getItemName() + "\" stock");
System.out.println("Name\tPrice\tAmount");
for (Map.Entry<Item, Integer> entry : stockItems.entrySet()) {
System.out.println(entry.getKey() + "\t" + entry.getValue());
}
}
但是如果我指定了密钥item
,我怎样才能在hashmap中找到具有该密钥的所有项目的数量?此刻,它会返回所有带有不同键的项目。
答案 0 :(得分:1)
how can I find the amount of all the items with that key in the hashmap?
Hash Map
键是唯一值。对于任何value
,您只有一个key
。
答案 1 :(得分:1)
我必须猜测你想要实现的目标,所以我假设如下:
Item
item
,并希望在地图中找到相应的条目你能做的是:
Item
实例,并使用它来访问计数映射equals()
和hashCode
方法中使用的数据并使用该数据访问计数地图1。的例子:
Map<String, Item> items = ...;
Integer quantity = stockItems.get(items.get("item"));
2。的例子:
class Item {
private String key;
public Item(String key) {
this.key = key;
}
...
//equals() and hashCode() should only use the key field
}
Integer quantity = stockItems.get( new Item("item") );
<强>更新强>:
如果键不是项目的唯一属性,则必须遍历地图中的所有条目,检查项目的键以获得匹配并自行创建总和。
答案 2 :(得分:1)
以下是否会成为您追求的目标?
public int getAvailable(final Item item) {
int count = 0;
String itemName = item.getItemName();
for (Map.Entry<Item, Integer> entry : stockItems.entrySet()) {
Item i = entry.getKey();
if(itemName.equals(i.getItemName())) {
count += entry.getValue();
}
}
return count;
}
编辑:编辑计数从0开始
答案 3 :(得分:0)
密钥在散列映射中是唯一的。因此,您的特定密钥只能有一个值。