trier un HasMap par ses valeurs.
bonsoir à tous ,
j'ai unHashMap <int, String> comme ci-dessous :
1 Pierre
2 Marcel
3 Pierre
4 Gorge
etc ....
Je souhaiterais trier selon les valeurs et pouvoir acceder ensuite a l'index int correspondant a la valeur .
J'ai vu la FAQ ici : http://java.developpez.com/faq/java/...IONS_trier_map
Mais je ne comprend pas tout .
J'ai bien compris ce passage :
Code:
1 2
| List<Long> cles = new ArrayList<Long>(personnes.keySet());
Collections.sort(cles, new PersonneComparator(personnes)); |
on trie les clef en fonctions des valeurs avec le comparateur .
Par contre en ce qui concerne le comparateur , je ne vois pas comment ca fonctionne , le trie ce fait de facon ascendente ou descendente ?
De plus comment l'adapter pour trier mes valeurs (qui sont des String et non pas des int) de manière ascendente par exemple .
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class PersonneComparator implements Comparator<Long>{
private Map<Long, Personne> personnes;//pour garder une copie du Map que l'on souhaite traiter
public PersonneComparator(Map<Long, Personne> personnes){
this.personnes = personnes; //stocker la copie pour qu'elle soit accessible dans compare()
}
public int compare(Long id1, Long id2){
//récupérer les personnes du Map par leur identifiant
Personne p1 = personnes.get(id1);
Personne p2 = personnes.get(id2);
//comparer les deux clés en fonction de l'age des personnes qu'ils indexent.
return p1.getAge() - p2.getAge();
}
} |
Merci de votre aide.