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 :
on trie les clef en fonctions des valeurs avec le comparateur .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 List<Long> cles = new ArrayList<Long>(personnes.keySet()); Collections.sort(cles, new PersonneComparator(personnes));
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 .
Merci de votre aide.
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 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(); } }
Partager