Probleme d'ajout dans une map
	
	
		Bonjour,
j'ai écrit différentes méthodes pour gérer une map :
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
   | import java.util.*;
 
public class TestMap {
    private Map<Couple, List<String>> map;
 
    public TestMap(){
	map = new HashMap<Couple, List<String>>();
	//Rempli la map
	rempli_map();
    }
 
    void afficheMap(){
	//iterateur sur la map
	Iterator it = getMap().entrySet().iterator();
	while (it.hasNext()){
	    Map.Entry pairs = (Map.Entry)it.next();
	    Couple couple = (Couple)pairs.getKey();
	    System.out.print(couple.getString() + " " + couple.getInt() + " : ");
	    List<String> liste = (List<String>)pairs.getValue();
	    for(int i=0; i<liste.size(); i++)
		System.out.print(liste.get(i) + " ");
	    System.out.println("");
	}
    }
 
    void setMap(Couple couple, List<String>liste){
	map.put(couple,liste);
    }
 
    Map<Couple, List<String>> getMap(){
	return map;
    }
 
    //recherche si le mot donne en parametre est dans la map
    Couple recherche_map(String mot){
	//iterateur sur la map
	Iterator it = getMap().entrySet().iterator();
	while (it.hasNext()){
	    Map.Entry pairs = (Map.Entry)it.next();
	    Couple couple = (Couple)pairs.getKey();
	    List<String> liste = (List<String>)pairs.getValue();
	    for(int i=0; i<liste.size(); i++)
		if(liste.get(i).equals(mot))//on a trouve le mot
		    return couple;//on retourne le couple correspondant
	}
	return null;//le mot n'est pas present
    }
 
    //rempli la map
    public void rempli_map(){
	Couple couple1 = new Couple("couple1",10);
	List<String> liste1 = new ArrayList<String>();
	liste1.add("un");
	liste1.add("deux");
	liste1.add("trois");
	setMap(couple1,liste1);
 
	Couple couple2 = new Couple("couple2",20);
	List<String> liste2 = new ArrayList<String>();
	liste2.add("quatre");
	liste2.add("cinq");
	liste2.add("six");
	setMap(couple2,liste2);
    }
 
    //ajoute un mot au couple donne en parametre
    boolean ajouteMot(Couple couple, String mot){
	boolean found = false;
	if(getMap().containsKey(couple)){
	    List<String> liste = getMap().get(couple);
	    liste.add(mot);
	    setMap(couple, liste);
	    found = true;
	}
	return found;
    }
 
 
    public static void main(String [] args){
	TestMap map = new TestMap();
	map.afficheMap();
	Couple couple = map.recherche_map("un");
	if(couple != null){
	    System.out.println("le couple qui gere le mot 'un' est : " + couple.getString() + " " + couple.getInt());
	}
 
	Couple c = new Couple("couple1",10);
	boolean found = map.ajouteMot(c, "neuf");
	if(found){
	    System.out.println("le mot 'neuf' a ete ajoute a la map");
	}
	else{
	    System.out.println("le mot 'neuf' n'a pas ete ajoute car le couple '(couple1,10)' n'est pas dans la map");
	}
    }
} | 
 
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
   |  
//Couple.java
public class Couple{
    private String s;
    private Integer val;
 
    public Couple(String s, Integer val){
	this.s = s;
	this.val = val;
    }
 
    public String getString(){
	return s;
    }
 
    public Integer getInt(){
	return val;
    }
} | 
 A l'execution du programme, j'obtiens :
	Code:
	
1 2 3 4 5
   | java TestMap
couple1 10 : un deux trois
couple2 20 : quatre cinq six
le couple qui gere le mot 'un' est : couple1 10
le mot 'neuf' n'a pas ete ajoute car le couple '(couple1,10)' n'est pas dans la map  | 
 Je ne comprends pas pourquoi le mot "neuf" n'est pas ajouté à la map alors que le couple est présent.
La méthode qui pose proiblème est la suivante :
	Code:
	
1 2 3 4 5 6 7 8 9 10 11
   | //ajoute un mot au couple donne en parametre
    boolean ajouteMot(Couple couple, String mot){
	boolean found = false;
	if(getMap().containsKey(couple)){
	    List<String> liste = getMap().get(couple);
	    liste.add(mot);
	    setMap(couple, liste);
	    found = true;
	}
	return found;
    } |