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 : 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));
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 : 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();
    }
}
Merci de votre aide.