Méthodes de tri couramment utilisées pour les cartes en Java : trier par clé, trier par valeur. Recommandé : Tutoriel vidéo Java
1. Trier par clé
TreeMapb77a8d9c3c319e50d4b02a976b347910 sous le package java.util intégré de jdk peut répondre à de tels besoins. La méthode TreeMap (Comparatore3882fcc260fc32c6b751547559600d3 comparator) peut être triée par clé en passant notre comparateur personnalisé.
Méthode de tri ascendant par défaut :
import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TEST { public static void main(String[] args) { TEST t = new TEST(); t.sort(); } public void sort(){ Map<String, String> treeMap = new TreeMap<String, String>(); treeMap.put("c", "ccccc"); treeMap.put("a", "aaaaa"); treeMap.put("b", "bbbbb"); treeMap.put("d", "ddddd"); Set<String> s = treeMap.keySet(); for (String key : s) { System.out.println(key+" : "+treeMap.get(key)); } } }
Résultat de sortie :
a : aaaaa
b : bbbbb
c : ccccc
d : ddddd
2. Tri par valeur
Le tri par valeur est relativement gênant. Il semble qu'il n'existe pas de structure de données directement disponible qui puisse gérer des exigences similaires, nous devons donc la convertir. nous-mêmes.
Le tri de la carte par valeur est très significatif. Des exigences similaires seront rencontrées dans de nombreuses situations. Sa valeur peut être considérée comme une règle ou un poids défini.
Principe : placez tous les éléments de la carte à trier dans une liste, puis utilisez une méthode statique de tri des collections (Liste8742468051c85b06f0a0af9e3e506b5c liste, Comparateur117c5a0bdb71ea9a9d0c2b99b03abe3e c)
Pour trier la liste, vous utilisez également un comparateur pour définir des règles de comparaison. Les éléments de la liste triée sont ensuite chargés dans la Map dans l'ordre. Afin de garantir définitivement que les éléments de la Map sont dans le même ordre que les éléments de la List triée, le type de données LinkedHashMap est utilisé.
Code d'implémentation
public class MapSortDemo { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(); map.put("KFC", "kfc"); map.put("WNBA", "wnba"); map.put("NBA", "nba"); map.put("CBA", "cba"); Map<String, String> resultMap = sortMapByKey(map); //按Key进行排序 // Map<String, String> resultMap = sortMapByValue(map); //按Value进行排序 for (Map.Entry<String, String> entry : resultMap.entrySet()) { System.out.println(entry.getKey() + " " + entry.getValue()); } } /** * 使用 Map按value进行排序 * @param map * @return */ public static Map<String, String> sortMapByValue(Map<String, String> oriMap) { if (oriMap == null || oriMap.isEmpty()) { return null; } Map<String, String> sortedMap = new LinkedHashMap<String, String>(); List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>( oriMap.entrySet()); Collections.sort(entryList, new MapValueComparator()); Iterator<Map.Entry<String, String>> iter = entryList.iterator(); Map.Entry<String, String> tmpEntry = null; while (iter.hasNext()) { tmpEntry = iter.next(); sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue()); } return sortedMap; } }
Pour plus de connaissances sur Java, veuillez faire attention à la colonne Tutoriel de base Java sur le site Web PHP chinois.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!