Si vous souhaitez trier les cartes dans le tableau, utilisez une implémentation SortedMap comme TreeMap ou ConcurrentSkipListMap. Cela prend un vecteur de HashMaps et renvoie un ArrayList (une collection non synchronisée et plus rapide que Vector) de SortedMaps.
public ArrayList<SortedMap<String, String>> sortMaps(Vector<HashMap<String, String> maps) {
ArrayList<TreeMap<String, String>> returnMaps = new ArrayList<TreeMap<String, String>>();
for(HashMap<String, String> theMap : maps) {
// TreeMap is a sorted map and this will use the default String.compareTo
TreeMap<String, String> newMap = new TreeMap<String, String>();
// put all the items from the HashMap into the TreeMap, which will autosort
newMap.putAll(theMap);
returnMaps.add(newMap);
}
return returnMaps;
}
Pour trier le vecteur par les premières touches (touches les plus bas, d'abord par ordre alphabétique) de la carte de hachage essayez ce qui suit avant la ligne de retour:
// this sorts the vector by first keys
Collections.sort(returnMaps, new Comparator<SortedMap<String,String>>() {
public int compare(SortedMap<String,String> a, HashMap<String,String> b) {
return a.firstKey().compareTo(b.firstKey());
}
});
Ou si vous voulez trier dernière clé (clés les plus élevées, dernière par ordre alphabétique):
// this sorts the vector by first keys
Collections.sort(returnMaps, new Comparator<SortedMap<String,String>>() {
public int compare(SortedMap<String,String> a, HashMap<String,String> b) {
return a.lastKey().compareTo(b.lastKey());
}
});
Pour retourner une carte triée de toutes les clés (se taper du pied sur les doublons):
public SortedMap<String, String> singledSortedMap(Vector<HashMap<String, String> maps) {
// this will end up with all the values, sorted by natural string ordering
SortedMap<String, String> returnMap = new TreeMap<String, String>();
for(HashMap<String, String> theMap : maps) {
returnMap.putAll(theMap);
}
return returnMap;
}
vous devrez être plus précis dans la description de votre problème. essayez-vous de trier le vecteur ou le contenu des hashmaps? Qu'avez-vous essayé jusqu'à présent? comment le résultat est-il censé être stocké? – Mat
Je ne comprends pas, une carte de hachage peut avoir plusieurs clés. Quel est le critère pour qu'une carte de hachage soit placée avant une autre? – aioobe
Un HashMap peut avoir beaucoup de clés (c'est tout le point), et ils pourraient même avoir exactement les mêmes clés, donc vous devez être plus précis sur la façon de trier le Vector –