Jump to content

[JAVA]Modification de code[Résolu]


Recommended Posts

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

Link to comment
Share on other sites

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);
}

Link to comment
Share on other sites

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,...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...