Bonjour,

mon titre n'est pas tres clair mais je ne savais pas quoi mettre.

Je souhaite avoir un objet style HashTable permettant de mettre à jour la valeur lorqu'on ajoute une clé deja existante.

genre :
hashTable : (k1, 10);
-> put(k1,100)
hasTable : (k1;110);
La clé que j'utilise pour le hash est un objet de ma création. Je me suis donc dis que j'aller redefinir equals pour cet objet clé.
l'objet clé (LigneCharge) est tableau de string de longueur 5

ma méthode equals (dans la classe clé) est donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
	public boolean equals(Object o2){
 
		if(this == o2)
			return true;
		if((o2 == null) || (o2.getClass() != this.getClass()))
			return false;
 
		return this.equals((LigneCharge) o2) ;
	}
 
	private boolean equals(LigneCharge l2){
 
		if(((String)this.tableau[0]).equals((String)l2.tableau[0])){//PROGRAMME
 
			if(((Integer)this.tableau[1]).equals((String)l2.tableau[1])){//PROJET
 
				if(((String)this.tableau[2]).equals((String)l2.tableau[2])){//TASK
 
					if(((String)this.tableau[3]).equals((String)l2.tableau[3])){//RESOURCE
 
						return (((String)this.tableau[4]).equals((String)l2.tableau[4]));//PERIOD	
					}
				}
			}
		}
		return false;
	}//equals
je veux qu'à chaque fois que je tente d'ajouter une valeur, si la clé existe déjà, je mets à jour la vakeur. J'ai donc fait ceci (dans la classe qui à le hashTable) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
/**
         * Vérifie si la clé existe. si oui addition avec la valeur initiale
         *                                                       si non création nouvelle entrée
         */
	public void add(LigneCharge key,Double value){
 
		if(liste.containsKey(key)){
			System.out.println("contains");
			//remove et insert
			Double units = (Double) liste.get(key);
			liste.remove(key);
			liste.put(key, new Double(value.doubleValue()+units.doubleValue()));
		} else
			liste.put(key, value);
 
 
	}//add
mais bon ça n'a pas l'air de fonctionner. J'ai des doublons quand je parcours ce HashTable. Donc je suppose qu'il ne tient pas compte de mon equals.

Comment dois-je m'y prendre ??