Häufig verwendete Sortiermethoden für Karten in Java: Sortieren nach Schlüssel, Sortieren nach Wert. Empfohlen: Java-Video-Tutorial
1. Nach Schlüssel sortieren
TreeMap
Standardmethode für aufsteigende Sortierung:
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)); } } }
Ausgabeergebnis:
a : aaaaa
b : bbbbb
c : ccccc
d : ddddd
2. Sortieren nach Wert
Es scheint, dass es keine direkt verfügbare Datenstruktur gibt, die ähnliche Anforderungen erfüllen kann, daher müssen wir sie konvertieren uns.
Die Sortierung der Karte selbst nach Wert ist in vielen Situationen sehr sinnvoll. Ihr Wert kann als eine definierte Regel oder Gewichtung betrachtet werden.
Prinzip: Platzieren Sie alle zu sortierenden Elemente in der Karte in einer Liste und verwenden Sie dann eine statische Methode der Sammlungssortierung (List
Um die Liste zu sortieren, verwenden Sie auch einen Komparator, um Vergleichsregeln zu definieren. Die Elemente in der sortierten Liste werden dann der Reihe nach in die Map geladen. Um sicherzustellen, dass die Elemente in der Map in derselben Reihenfolge sind wie die Elemente in der sortierten Liste, wird der Datentyp LinkedHashMap verwendet.
Implementierungscode
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; } }
Weitere Java-Kenntnisse finden Sie in der Spalte Java Basic Tutorial auf der chinesischen PHP-Website.
Das obige ist der detaillierte Inhalt vonKann eine Karte in Java nach Schlüssel sortiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!