Map est une interface de collection de paires clé-valeur. Ses classes d'implémentation incluent principalement : HashMap, TreeMap, Hashtable et LinkedHashMap, etc.
•TreeMap : Une implémentation NavigableMap basée sur un arbre Rouge-Noir, qui est trié selon l'ordre naturel de ses clés, ou selon le Comparator fourni lors de la création de la carte, selon la méthode de Construction utilisée.
•La valeur de HashMap n'est pas dans l'ordre. Elle est implémentée selon le HashCode de la clé. Comment implémenter le tri pour ce HashMap non ordonné ? Reportez-vous au tri des valeurs de TreeMap.
Map.Entry renvoie la vue Collections.
Tri par clé
TreeMap est par défaut par ordre croissant Si nous devons changer la méthode de tri, nous devons utiliser un comparateur : Comparator. Comparator est une interface de comparaison qui peut trier des objets de collection ou des tableaux. Le tri peut être réalisé en implémentant la méthode publique compare(T o1, To2) de cette interface.
Remarque : Les codes suivants ont été testés dans Jdk1.6
TreeMap est trié par clé par ordre croissant par défaut
public static void keyUpSort() { // 默认情况,TreeMap按key升序排序 Map<String, Integer> map = new TreeMap<String, Integer>(); map.put("acb1", 5); map.put("bac1", 3); map.put("bca1", 20); map.put("cab1", 80); map.put("cba1", 1); map.put("abc1", 10); map.put("abc2", 12); // 默认情况下,TreeMap对key进行升序排序 System.out.println("------------正常情况,TreeMap按key升序排序--------------------"); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }
Modifier le tri de la méthode TreeMap, trier par clé dans l'ordre décroissant
public static void keyDownSort() { // TreeMap,按key降序排序 // 降序排序比较器 Comparator<String> keyComparator = new Comparator<String>() { @Override public int compare(String o1, String o2) { // TODO Auto-generated method stub return o2.compareTo(o1); } }; Map<String, Integer> map = new TreeMap<String, Integer>(keyComparator); map.put("acb1", 5); map.put("bac1", 3); map.put("bca1", 20); map.put("cab1", 80); map.put("cba1", 1); map.put("abc1", 10); map.put("abc2", 12); System.out.println("------------TreeMap按key降序排序--------------------"); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }
Trier par valeur
Ce qui suit montre uniquement le tri par valeur dans ordre croissant par TreeMap, qui s'applique également à HashMap.
Modifiez la méthode de tri de TreeMap et triez par ordre croissant de valeur
Remarque : dans des circonstances normales, Map ne peut pas être trié à l'aide de la méthode Collections.sort(), mais vous pouvez convertir la Map dans une liste.
public static void valueUpSort() { // 默认情况,TreeMap按key升序排序 Map<String, Integer> map = new TreeMap<String, Integer>(); map.put("acb1", 5); map.put("bac1", 3); map.put("bca1", 20); map.put("cab1", 80); map.put("cba1", 1); map.put("abc1", 10); map.put("abc2", 12); // 升序比较器 Comparator<Map.Entry<String, Integer>> valueComparator = new Comparator<Map.Entry<String,Integer>>() { @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { // TODO Auto-generated method stub return o1.getValue()-o2.getValue(); } }; // map转换成list进行排序 List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet()); // 排序 Collections.sort(list,valueComparator); // 默认情况下,TreeMap对key进行升序排序 System.out.println("------------map按照value升序排序--------------------"); for (Map.Entry<String, Integer> entry : list) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }
Résultats des tests
------------正常情况,TreeMap按key升序排序-------------------- abc1:10 abc2:12 acb1:5 bac1:3 bca1:20 cab1:80 cba1:1 ------------TreeMap按key降序排序-------------------- cba1:1 cab1:80 bca1:20 bac1:3 acb1:5 abc2:12 abc1:10 ------------map按照value升序排序-------------------- cba1:1 bac1:3 acb1:5 abc1:10 abc2:12 bca1:20 cab1:80
Ce qui précède est la carte Java présentée par l'éditeur La mise en œuvre méthode de tri par valeur, j'espère que cela sera utile à tout le monde. Si vous avez des questions, laissez-moi un message et l'éditeur vous répondra à temps. Je voudrais également vous remercier tous pour votre soutien au site Web PHP chinois !
Pour plus d'articles liés à la méthode d'implémentation du tri JavaMap par valeur, veuillez faire attention au site Web PHP chinois !