【发布时间】:2018-02-20 11:51:16
【问题描述】:
我在这里看到了很多关于如何使用 ArrayList 和 HashMaps 的不错的解决方案,但关键是我仍然无法解决我的问题。
所以,这个想法是很少有人喝啤酒、葡萄酒和可乐。所以,它看起来像这样(例如):
Steve wine
Steve cola
Ben cola
Frank wine
Ben cola
Ben cola
Frank wine
最后,我需要计算他们每个人喝了多少杯饮料。所以,答案应该是这样的:
Steve wine 1
Steve cola 1
Ben cola 3
Frank wine 2
我的想法是创建一个对象 Person(String name, String Drink)。然后我把所有的人放到 ArrayList 中。之后我创建了 HashMap 并想在 key 不存在时添加一个新的 Person ,如果 key 已经存在则递增到 1 。
Map<Person, Integer> map = new HashMap<Person, Integer>();
for (Person p : persons)
{
if (map.containsKey(p)) {
map.put(p, map.get(p)+1);
} else {
map.put(p,1);
}
}
它不起作用。它只是返回给我这样的结果:
Steve wine 1
Steve cola 1
Ben cola 1
Frank wine 1
Ben cola 1
Ben cola 1
Frank wine 1
所以,据我所知,这应该是其他一些技巧。也许您还可以告诉任何其他关于如何计算饮料杯数而不是使用 HashMap 的想法? 非常感谢!
【问题讨论】:
-
你在 Person 类中重写 hashCode 和 equals 了吗?