[JAVA]Modification de code

Le neuf -  
 Utilisateur anonyme -
Bonjour,
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

  1. Utilisateur anonyme
     
    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
    0