1. Theoretische Vorbereitung
Map ist eine Sammlungsschnittstelle von Schlüssel-Wert-Paaren. Zu seinen Implementierungsklassen gehören hauptsächlich: HashMap, TreeMap, Hashtable und LinkedHashMap.
TreeMap: Eine NavigableMap-Implementierung basierend auf einem Rot-Schwarz-Baum, der je nach verwendeter Konstruktmethode nach der natürlichen Reihenfolge seiner Schlüssel oder nach dem beim Erstellen der Karte bereitgestellten Komparator sortiert wird.
Der Wert von HashMap ist nicht in Ordnung. Er wird gemäß dem HashCode des Schlüssels implementiert. Wie implementieren wir die Sortierung für diese ungeordnete HashMap? Siehe die Wertesortierung von TreeMap.
Map.Entry gibt die Sammlungsansicht zurück.
2. Schlüsselsortierung
TreeMap ist standardmäßig in aufsteigender Reihenfolge. Wenn wir die Sortiermethode ändern müssen, müssen wir einen Komparator verwenden: Komparator. Comparator ist eine Komparatorschnittstelle, die Sammlungsobjekte oder Arrays sortieren kann. Durch die Implementierung der öffentlichen Vergleichsmethode (T o1, To2) dieser Schnittstelle kann eine Sortierung wie folgt erreicht werden:
import java.util.Comparator; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TreeMapTest { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>( new Comparator<String>() { public int compare(String obj1, String obj2) { // 降序排序 return obj2.compareTo(obj1); } }); map.put("b", "ccccc"); map.put("d", "aaaaa"); map.put("c", "bbbbb"); map.put("a", "ddddd"); Set<String> keySet = map.keySet(); Iterator<String> iter = keySet.iterator(); while (iter.hasNext()) { String key = iter.next(); System.out.println(key + ":" + map.get(key)); } } }
Die laufenden Ergebnisse sind wie folgt:
d:aaaaa c:bbbbb b:ccccc a:ddddd
3. Wertsortierung
Das obige Beispiel dient der Sortierung nach dem Schlüsselwert von TreeMap, aber manchmal müssen wir nach dem Wert von TreeMap sortieren. Um Werte zu sortieren, müssen wir die Methode sort(List8742468051c85b06f0a0af9e3e506b5c list, Comparator117c5a0bdb71ea9a9d0c2b99b03abe3e c) von Collections verwenden, die die angegebene Liste entsprechend der vom angegebenen Komparator generierten Reihenfolge sortiert. Es gibt jedoch eine Voraussetzung, das heißt, alle Elemente müssen gemäß dem bereitgestellten Komparator wie folgt verglichen werden:
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class TreeMapTest { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(); map.put("a", "ddddd"); map.put("c", "bbbbb"); map.put("d", "aaaaa"); map.put("b", "ccccc"); //这里将map.entrySet()转换成list List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet()); //然后通过比较器来实现排序 Collections.sort(list,new Comparator<Map.Entry<String,String>>() { //升序排序 public int compare(Entry<String, String> o1, Entry<String, String> o2) { return o1.getValue().compareTo(o2.getValue()); } }); for(Map.Entry<String,String> mapping:list){ System.out.println(mapping.getKey()+":"+mapping.getValue()); } } }
Die laufenden Ergebnisse sind wie folgt:
d:aaaaa c:bbbbb b:ccccc a:ddddd
Die oben genannten Java Map-Implementierungsmethoden zum Sortieren nach Schlüssel und zum Sortieren nach Wert sind alle vom Herausgeber geteilten Inhalte. Ich hoffe, dass sie Ihnen eine Referenz geben können, und ich hoffe, dass Sie die chinesische PHP-Website unterstützen.
Weitere Java Map-Implementierungsmethoden zum Sortieren nach Schlüssel und Wert finden Sie auf der chinesischen PHP-Website!