[JAVA]Modification de code

Fermé
Le neuf - 17 avril 2006 à 11:43
 Utilisateur anonyme - 24 mai 2006 à 14:03
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
A voir également:

1 réponse

Utilisateur anonyme
24 mai 2006 à 14:03
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