だから、私は同じキーで異なる値を持つすべてのペットショップの合計を計算するこのプログラムを持っています。しかし、今、私は同じキーを持つ各ペットショップの平均を計算したいと思います。私は、ペットショップがarraylistに何回含まれているかを知るためにカウンターを使うことを考えていました。しかし、それは動作しません。各ループごとに別のものを実行する必要がありますか?同じキーでハッシュマップ値の平均を計算する方法
public class AverageCost {
public void calc(ArrayList<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: %s%n", key, hm.get(key));
}
}
を分割するCollections.frequencyを使用することができます。 'HashMap'にキーを重複させることはできません。したがって、「同じキーを持つ各ペットショップの平均を計算したい」と言うと、キーごとに1つのエントリしか存在しません。 – Austin
累積価格とペット数の両方を保持するために、複合価値オブジェクトを数えたり使用したりするために2番目のマップを導入することができます: 'Map hm' –
hoaz
ハッシュマップに平均を保存しようとしているのですか? ? – marcellorvalle