Traitement de LinkedHashMap
Bonjour,
J ai une question a laquelle je ne trouve pas de reponse et je suis completement bloque. c est pourquoi je me tourne vers vous en esperant en avoir une chez vous.
j ai cree une classe duo tres simple qui a deux elements.
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
|
public class Duo {
int a;
int b;
public Duo(int a, int b){
this.a = a;
this.b = b;
}
/**
* @return the a
*/
public int getA() {
return a;
}
/**
* @param a the a to set
*/
public void setA(int a) {
this.a = a;
}
/**
* @return the b
*/
public int getB() {
return b;
}
/**
* @param b the b to set
*/
public void setB(int b) {
this.b = b;
}
} |
Apres, en partant d une liste [0,1,2,3,4], je cree une LinkedHashMap avec comme cle un Duo et comme valeur un Integer dans laquelle je stocke :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Key : (0,1) -->> Value 1
Key : (0,2) -->> Value 2
Key : (0,3) -->> Value 3
Key : (0,4) -->> Value 4
Key : (1,2) -->> Value 5
Key : (1,3) -->> Value 6
Key : (1,4) -->> Value 7
Key : (2,3) -->> Value 8
Key : (2,4) -->> Value 9
Key : (3,4) -->> Value 10 |
ce que j obtiens par le code suivant :
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
|
LinkedHashMap<Duo, Integer> map = new LinkedHashMap<Duo, Integer>();
List<Integer> values = Arrays.asList(0,1,2,3,4);
int index = 1;
for(Integer value : values){
int position = values.indexOf(value);
List<Integer> nextValues = values.subList(position + 1, values.size());
for(Integer nextValue : nextValues){
Duo duo = new Duo(value, nextValue);
map.put(duo, index);
index++;
}
}
Iterator<Duo> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
Duo key = iterator.next();
int a = key.getA();
int b = key.getB();
System.out.println("Key : (" + a + ","+ b + ") -->> "+ " Value " + map.get(key));
} |
Rien de magique jusque la !!
Les ennuis commencent a partir du moment ou je veux recuperer le contenu de ma LinkedHashMap par le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
for(Integer value : values){
int position = values.indexOf(value);
List<Integer> nextValues = values.subList(position + 1, values.size());
for(Integer nextValue : nextValues){
Duo duo = new Duo(value, nextValue);
System.out.println("Value " + map.get(duo));
}
} |
Sauf que je n obtiens que des Null. Et je ne sais pas ce qui se passe.
N.B. Peut etre il y d autres moyens pour le faire mais je tiens a utiliser une boucle for (pour parcourir la liste values value par value) pour des considerations reltives au resultat final auquel je compte aboutir (et que je n ai pas presente ici pour ne pas etre trop long)..........
Merci encore une fois de votre aide.