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
TreeMapb77a8d9c3c319e50d4b02a976b347910 kann solche Anforderungen erfüllen Die Methode TreeMap(Comparatore3882fcc260fc32c6b751547559600d3 comparator) kann durch Übergabe unseres benutzerdefinierten Comparators nach Schlüssel sortiert werden.
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 (List8742468051c85b06f0a0af9e3e506b5c list, Comparator117c5a0bdb71ea9a9d0c2b99b03abe3e c)
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!