ArrayListとHashMapsを使って作業する方法についてここで素晴らしいソリューションがたくさんありましたが、問題は解決できません。HashMapの一意の値の数を数えるには?
だから、ビール、ワイン、コーラを飲む人はほとんどいないということです。だから、それは、(例えば)以下のようになります。
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
私の考えは、対象者(文字列名、文字列のドリンク)を作成するために入れていました。そして、私はすべての人をArrayListに入れました。その後、私はHashMapを作成し、そこにキーが存在しない場合は新しいPersonを追加したい、キーがすでに存在する場合は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をオーバーライドしましたか? – Eran
[HashSetの複製は2つのオブジェクトが同じであることを認識していないようです](https://stackoverflow.com/questions/3692426/hashset-does-not-seem-to-realize-that-two-objects-are -the-same) – Ferrybig