J'ai vu beaucoup de bonnes solutions ici sur la façon de travailler avec ArrayList et HashMaps, mais le fait est que je ne peux toujours pas résoudre mon problème. Donc, l'idée est qu'il y a peu de gens qui boivent de la bière, du vin et du coca cola. Alors, ça ressemble à ça (par exemple):Comment compter le nombre de valeurs uniques dans HashMap?
Steve wine
Steve cola
Ben cola
Frank wine
Ben cola
Ben cola
Frank wine
En fin de compte, je dois compter combien de verres de chaque boisson chacun d'eux a bu. Donc, la réponse devrait ressembler à ce que:
Steve wine 1
Steve cola 1
Ben cola 3
Frank wine 2
Mon idée était de mettre à créer une personne d'objet (String name, boisson String). Ensuite, je mets toutes les personnes à ArrayList. Après cela, j'ai créé HashMap et je voulais y ajouter une nouvelle personne si la clé n'existe pas, et à incrémenter à 1 si la clé existe déjà.
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);
}
}
Cela ne fonctionne pas. Il me renvoie juste le résultat comme ceci:
Steve wine 1
Steve cola 1
Ben cola 1
Frank wine 1
Ben cola 1
Ben cola 1
Frank wine 1
Ainsi, si je comprends bien cela devrait être un autre tour ici. Peut-être que vous pourriez également dire d'autres idées sur la façon de compter les verres des boissons au lieu d'utiliser HashMap? Merci beaucoup!
Avez-vous remplacé hashCode et est égal à la classe Person? – Eran
Un doublon possible de [HashSet ne semble pas réaliser que deux objets sont identiques] (https://stackoverflow.com/questions/3692426/hashset-does-not-seem-to-realize-that-two-objects-are -the-same) – Ferrybig