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
제 아이디어는 Person (String name, String drink) 개체를 만들기위한 것입니다. 그럼 모든 사람을 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의 복제본이 두 객체가 동일하다는 것을 인식하지 못하는 것 같습니다] (https://stackoverflow.com/questions/3692426/hashset-does-not-seem-to-realize-that-two-objects-are -the- same) – Ferrybig