[JAVA]Modification de code
Le neuf
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
j'ai écrit ce code qui me permet de savoir la liste de nourriture à prévoir pour des animaux.
Je voudrais savoir comment je dois modifier ce code pour ne pas avoir :
mais plutôt:
c'est à dire regrouper les nourritures identiques.
Merci d'avance
j'ai écrit ce code qui me permet de savoir la liste de nourriture à prévoir pour des animaux.
public List<String> getFood(){
List<String> result = new ArrayList<String>();
for(Animal a : list)
result.add(a.getFeedingInfo());
return result;
}
Je voudrais savoir comment je dois modifier ce code pour ne pas avoir :
[3 kg de bananes, 3 kg de viande, 3 kg de bananes, 4 kg de viande , 1 poulet]
mais plutôt:
[2 x 3 kg de bananes, 3 kg de viandes, 4 kg de viande , 1 poulet]
c'est à dire regrouper les nourritures identiques.
Merci d'avance
1 réponse
-
Je ferai comme ceci:
import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public class AnimalFeed { private Map feedInfo; private List animals; public AnimalFeed() { super(); animals = new ArrayList(); feedInfo = new HashMap(); } public List getFood() { List food = new ArrayList(); for(int i=0 ; i<animals.size() ; i++){ Animal animal = (Animal)animals.get(i); FeedType type = animal.getFeedType(); int quantity = animal.getFeedQuantity(); if(feedInfo.get(type)==null){ feedInfo.put(type,new Integer(quantity)); }else{ int totalQuantity = ((Integer)feedInfo.get(type)).intValue() + quantity; feedInfo.put(type,new Integer(totalQuantity)); } } Iterator it = feedInfo.keySet().iterator(); while(it.hasNext()){ FeedType type = (FeedType)it.next(); StringBuffer buffer = new StringBuffer(); buffer.append((Integer)feedInfo.get(type)).append(" ").append(type.getFeedMeasure()).append(" de ").append(type.getFeedName()); food.add(buffer.toString()); } return food; } public void addAnimal(Animal animal) { animals.add(animal); } public class Animal { private FeedType feedType; private int feedQuantity; public Animal(String name) { super(); } public FeedType getFeedType() { return feedType; } public int getFeedQuantity() { return feedQuantity; } public void setFeedQuantity(int feedQuantity) { this.feedQuantity = feedQuantity; } public void setFeedType(FeedType feedType) { this.feedType = feedType; } } public class FeedType { private String feedName; private String feedMeasure; public FeedType(String feedName, String feedMeasure) { super(); this.feedName = feedName; this.feedMeasure = feedMeasure; } public String getFeedName() { return feedName; } public String getFeedMeasure() { return feedMeasure; } } public static void main(String[] args) { AnimalFeed demo = new AnimalFeed(); FeedType poulet = demo.new FeedType("poulet", "pièce"); FeedType abats = demo.new FeedType("abats", "kg"); Animal lion = demo.new Animal("Lionel"); lion.setFeedType(poulet); lion.setFeedQuantity(42); demo.addAnimal(lion); Animal chien = demo.new Animal("Rex"); chien.setFeedType(abats); chien.setFeedQuantity(2); demo.addAnimal(chien); Animal serpent = demo.new Animal("Aie confianssssse!"); serpent.setFeedType(poulet); serpent.setFeedQuantity(1); demo.addAnimal(serpent); System.out.println(demo.getFood()); } }
;-)
HackTrack