Bonjour,
Je voudris trier une hashmap selon les valeurs par ordre décroissant.
J'ai trouvé une fonction sur ce forum que j'ai essayé d'adapter mais je n'ai pa recu à l'adapter correctement !!
Voici mon code:
Mon probleme est que les deux lignes suivantes ne me donne pas le même résultat:
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 private void sortMap(Map aMap) { Map myMap = new HashMap(); Set set = new TreeSet( new Comparator() { public int compare(Object obj, Object obj1) { Integer val1 = (Integer) ((Map.Entry) obj).getValue(); Integer val2 = (Integer) ((Map.Entry) obj1).getValue(); if (val2.compareTo(val1)==0) return -1; return val2.compareTo(val1); } } ); set.addAll(aMap.entrySet()); for(Iterator it = set.iterator(); it.hasNext() ;) { Map.Entry myMapEntry = (Map.Entry) it.next(); System.out.println ( myMapEntry.getKey ( ) + " = " + myMapEntry.getValue ( ) ) ; myMap.put( myMapEntry.getKey(), myMapEntry.getValue()); } System.out.println("MyMap: "+myMap.values()); }
System.out.println (myMapEntry.getKey()+"="+myMapEntry.getValue()) ;
System.out.println("MyMap: "+myMap.values());
En effet, la premiere ligne (dans la boucle for) me donne les résultats dans l'ordre décroissant comme je le désire, alors que la deuxieme me donne les résultats dans le sens inverse (en faite elle me donne le résultats toujours dans l'ordre croissant)
Je ne comprend pas d'ou vient cette erreur. On dirait que la fonction "put" met les réultats toujours dans le même ordre.
Il est également fortement possible que j'ai mal compris le code, en effet je ne suis pas familier avec les comparator.
Pourriez-vous m'aider s'il vous plait.
Merdi beaucoup pour votre aide.
Partager