80 votes

Comment utiliser l'interface SortedMap en Java ?

j'ai un

  Map<Float, MyObject>

Quelle est la meilleure façon de garder la carte triée en fonction du flotteur ?

Est-ce que SortedMap la meilleure réponse ? TreeMap ? Comment l'utiliser ?

Je ne crée la carte qu'une seule fois et remplace fréquemment MyObject myMap.put() et myMap.get() .

105voto

Barth Points 2176

J'utiliserais TreeMap , qui implémente SortedMap . Il est conçu exactement pour cela.

Exemple:

 Map<Integer, String> map = new TreeMap<Integer, String>();

// Add Items to the TreeMap
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");

// Iterate over them
for (Map.Entry<Integer, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " => " + entry.getValue());
}

Voir la page du didacticiel Java pour SortedMap . Et voici une liste de tutoriels liés à TreeMap.

51voto

Tom Jefferys Points 8065

Un TreeMap est probablement le moyen le plus simple de le faire. Vous l'utilisez exactement comme une carte normale. c'est à dire

 Map<Float,String> mySortedMap = new TreeMap<Float,MyObject>();
// Put some values in it
mySortedMap.put(1.0f,"One");
mySortedMap.put(0.0f,"Zero");
mySortedMap.put(3.0f,"Three");

// Iterate through it and it'll be in order!
for(Map.Entry<Float,String> entry : mySortedMap.entrySet()) {
    System.out.println(entry.getValue());
} // outputs Zero One Three 

Cela vaut la peine de jeter un œil à la documentation de l'API, http://download.oracle.com/javase/6/docs/api/java/util/TreeMap.html pour voir ce que vous pouvez en faire d'autre.

3voto

Thilo Points 108673

TreeMap, qui est une implémentation de l'interface SortedMap, fonctionnerait.

Comment l'utiliser ?

 Map<Float, MyObject> map = new TreeMap<Float, MyObject>();

2voto

Mister Smith Points 8587

TreeMap trie selon l'ordre naturel de la clé. Les clés doivent implémenter Comparable ou être compatibles avec un Comparator (si vous avez passé une instance au constructeur). Dans votre cas, Float implémente déjà Comparable , vous n'avez donc rien à faire de spécial.

Vous pouvez appeler keySet pour récupérer toutes les clés dans l'ordre croissant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X