Heim >Java >javaLernprogramm >Implementierungsmethode der JavaMap-Sortierung nach Wert
Map ist eine Sammlungsschnittstelle von Schlüssel-Wert-Paaren. Zu den Implementierungsklassen gehören hauptsächlich: HashMap, TreeMap, Hashtable und LinkedHashMap usw.
•TreeMap: Eine NavigableMap-Implementierung basierend auf einem Rot-Schwarz-Baum, der je nach verwendeter Konstruktionsmethode 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.
Nach Schlüssel sortieren
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. Die Sortierung kann durch Implementierung der öffentlichen Vergleichsmethode (T o1, To2) dieser Schnittstelle erreicht werden.
Hinweis: Die folgenden Codes wurden in Jdk1.6 getestet
TreeMap ist standardmäßig in aufsteigender Reihenfolge nach Schlüssel sortiert
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()); } }
Ändern die Sortierung der TreeMap-Methode, nach Schlüssel in absteigender Reihenfolge sortieren
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()); } }
Nach Wert sortieren
Das Folgende zeigt nur die Sortierung nach Wert in Aufsteigende Reihenfolge nach TreeMap, was auch für HashMap gilt.
Ändern Sie die Sortiermethode von TreeMap und sortieren Sie in aufsteigender Reihenfolge des Werts
Hinweis: Unter normalen Umständen kann die Karte nicht mit der Methode Collections.sort() sortiert werden, Sie können die Karte jedoch konvertieren in eine Liste einfügen.
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()); } }
Testergebnisse
------------正常情况,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
Das Obige ist die vom Herausgeber eingeführte Java-Karte. Die Implementierung Ich hoffe, dass die Methode zum Sortieren nach Wert für alle hilfreich ist. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der chinesischen PHP-Website bedanken!
Weitere Artikel zur Implementierungsmethode der JavaMap-Sortierung nach Wert finden Sie auf der chinesischen PHP-Website!