April 17, 200619 yr Bonjour, j'ai écrit ce code qui me permet de savoir la liste de nourriture à prévoir pour des animaux. public List<String> Food(){ List<String> food = new ArrayList<String>(); for(Animal a : list) food.add(a.getFeedingInfo()); return food; } Je voudrias regrouper les nourritures identiques. Merci d'avance Edited April 19, 200619 yr by Premium
April 17, 200619 yr Une Map ? HashMap<Nourriture, Integer> => association entre une nourriture et son nombre d'éléments. Par contre, au lieu de faire result.add tu dois faire (dans ta boucle) Nourriture n = a.getFeedInfo(); Integer val = result.get(n); if ( val == null ) { result.put(n, 1); } else { result.put(n, val+1); }
April 17, 200619 yr Author Une Map ? HashMap<Nourriture, Integer> => association entre une nourriture et son nombre d'éléments. Par contre, au lieu de faire result.add tu dois faire (dans ta boucle) Nourriture n = a.getFeedInfo(); Integer val = result.get(n); if ( val == null ) { result.put(n, 1); } else { result.put(n, val+1); } Salut, merci pour la code. En compilant ce code : public Map<String, Integer> getFeedingInfo(){ Map<String, Integer> result = new HashMap<String, Integer>(); for(Animal a : list){ String info = a.getFeedingInfo(); Integer val = result.get(info); if ( val == null ) result.put(info, 1); else result.put(info, val+1); } return result; } ,j'obtiens cet affichage : {3 kg de bananes=2, 4 kg de viande et une jambe de porc=1, 1 poulet=1, 3 kg de viande=1} Comment ça se fait qu'il y ait le '='? De plus,comment faire en sorte que l'affichage se fasse comme ceci : 2 x 3 kg de bananes , 1 x 4 kg de viande,...
April 17, 200619 yr 2 méthodes : 1. Ecris ta propre classe qui dérive de Map, dans laquelle tu redéfinis juste la méthode toString 2. N'utilise pas directement la méthode toString de ta map, mais écris une classe (ex : FoodUtils) à laquelle tu délègues le soin de générér un affichage correct, en lui passant ta map. Une classe utilitaire de ce type aurait plutôt des méthodes statiques. La méthode 2 est plus souple et plus propre, car elle n'interfère pas avec les classes existantes.
April 17, 200619 yr Au fait, Premium, tu ne serais pas en Licence à Marne la Vallée? (je dis ça, j'dis rien :))
Archived
This topic is now archived and is closed to further replies.