gpt4 book ai didi

java - 如何用相同的键java对hashmap值求和

转载 作者:行者123 更新时间:2023-11-29 09:52:30 25 4
gpt4 key购买 nike

所以我遇到了一个问题,我必须将我的 HashMap 中具有相同键的所有值相加。数据(宠物店和宠物价格)是从 ArrayList 中检索的。目前,该程序仅获取每个商店的最后一个值,因为有多个商店名称相同但宠物价格不同。我希望能够总结每家商店的宠物价格。所以如果我们有例如
Law Pet shop: 7.00
另一家Law Pet shop: 5.00,
我想这样输出:
Law Pet shop: 13.00。
这是代码和输出:

public class AverageCost {

public void calc(ArrayList<Pet> pets){

String name = "";
double price = 0;
HashMap hm = new HashMap();

for (Pet i : pets) {
name = i.getShop();
price = i.getPrice();

hm.put(name, price);
}

System.out.println("");
// Get a set of the entries
Set set = hm.entrySet();
// Get an iterator
Iterator i = set.iterator();
// Display elements
while(i.hasNext()) {

Map.Entry me = (Map.Entry)i.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
}
}

目前这是输出:

水上杂技:7.06
Briar Patch 宠物店:5.24
普雷斯顿宠物:18.11
动物园:18.7
厨房宠物:16.8
除了 Badgers 之外的任何东西:8.53
Petsmart:21.87
莫里斯宠物和用品:7.12

最佳答案

首先,请编程到接口(interface)(不是具体的集合类型)。其次,请不要使用 raw types .接下来,您的 Map 只需要包含宠物的名称和价格总和(因此 String, Double)。类似的东西,

public void calc(List<Pet> pets) {
Map<String, Double> hm = new HashMap<>();
for (Pet i : pets) {
String name = i.getShop();
// If the map already has the pet use the current value, otherwise 0.
double price = hm.containsKey(name) ? hm.get(name) : 0;
price += i.getPrice();
hm.put(name, price);
}
System.out.println("");
for (String key : hm.keySet()) {
System.out.printf("%s: %.2f%n", key, hm.get(key));
}
}

关于java - 如何用相同的键java对hashmap值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36554356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com