


Ausführliche Erklärung zum Sortieren von Karten in Java (Verwendung der Kartensammlung)
Wenn Sie heute Statistiken erstellen, müssen Sie die Bereiche sortieren
1. Kurze Einführung in die Karte
Bevor wir die Kartensortierung erklären, wollen wir uns zunächst ein wenig mit der Karte befassen. Map ist eine Sammlungsschnittstelle von Schlüssel-Wert-Paaren. Zu ihren Implementierungsklassen gehören hauptsächlich: HashMap, TreeMap, Hashtable und LinkedHashMap usw. Die Unterschiede zwischen den vier sind wie folgt (kurze Einführung):
HashMap: Unsere am häufigsten verwendete Karte speichert Daten basierend auf dem HashCode-Wert des Schlüssels. Sein Wert kann direkt basierend auf dem Schlüssel abgerufen werden. und es hat eine schnelle Zugriffsgeschwindigkeit. HashMap lässt nur zu, dass der Schlüsselwert eines Datensatzes Null ist (mehrere Datensätze werden überschrieben); der Wert mehrerer Datensätze kann Null sein. Asynchron.
TreeMap: Die gespeicherten Datensätze können standardmäßig in aufsteigender Reihenfolge sortiert werden. Wenn Sie einen Iterator zum Durchlaufen der TreeMap verwenden, werden die erhaltenen Datensätze sortiert. TreeMap lässt nicht zu, dass der Schlüsselwert null ist. Asynchron.
Hashtable: Ähnlich wie HashMap, außer dass die Schlüssel- und Wertwerte nicht null sein dürfen; es unterstützt die Thread-Synchronisation, das heißt, es kann immer nur ein Thread in die Hashtable schreiben, was auch der Fall ist Das führt dazu, dass Hashtale beim Schreiben langsamer wird.
LinkedHashMap: Speichert die Einfügereihenfolge von Datensätzen. Wenn Sie LinkedHashMap mit Iterator durchlaufen, muss der zuerst erhaltene Datensatz zuerst eingefügt werden. Dies ist beim Durchlaufen langsamer. Sowohl Schlüssel als auch Wert dürfen leer und asynchron sein.
2. Kartensortierung
TreeMap
TreeMap ist standardmäßig in aufsteigender Reihenfolge, wenn wir die Sortiermethode ändern müssen ein Komparator: 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 erreicht werden kleiner als, gleich oder größer als o2 gibt eine negative Ganzzahl, 0 bzw. eine positive Ganzzahl zurück. Wie folgt:
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("c", "ccccc"); map.put("a", "aaaaa"); map.put("b", "bbbbb"); map.put("d", "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 Laufergebnisse sind wie folgt:
d:ddddd
c:ccccc
b:bbbbb
a:aaaaa
Das obige Beispiel Es wird nach dem Schlüsselwert von TreeMap sortiert, aber manchmal müssen wir nach dem Wert von TreeMap sortieren. Um Werte zu sortieren, müssen wir die Methode sort(List
public class TreeMapTest { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(); map.put("d", "ddddd"); map.put("b", "bbbbb"); map.put("a", "aaaaa"); map.put("c", "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()); } } }
Laufergebnis
a:aaaaa
b:bbbbb
c:ccccc
d:ddddd
HashMap
Wir haben alle HashMap-Werte, die nicht in Ordnung sind. Sie werden gemäß dem HashCode des Schlüssels implementiert. Wie implementieren wir die Sortierung für diese ungeordnete HashMap? Bezogen auf die Wertesortierung von TreeMap können wir auch die Sortierung von HashMap implementieren.
public class HashMapTest { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("c", "ccccc"); map.put("a", "aaaaa"); map.put("b", "bbbbb"); map.put("d", "ddddd"); 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()); } } }
Laufendes Ergebnis
a:aaaaa
b:bbbbb
c:ccccc
d:ddddd
Mehr Java, wie man eine Karte erstellt Ausführliche Erläuterung der Sortierung (Verwendung von Kartensammlungen). Bitte beachten Sie die PHP-Chinese-Website für verwandte Artikel!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

In diesem Artikel wird die Integration der funktionalen Programmierung in Java unter Verwendung von Lambda -Ausdrücken, Streams -API, Methodenreferenzen und optional untersucht. Es zeigt Vorteile wie eine verbesserte Lesbarkeit der Code und die Wartbarkeit durch SUKTIVE UND VERUSNAHMETALITÄT

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In diesem Artikel werden die NIO-API von Java für nicht blockierende E/A erläutert, wobei Selektoren und Kanäle verwendet werden, um mehrere Verbindungen effizient mit einem einzelnen Thread zu verarbeiten. Es beschreibt den Prozess, die Vorteile (Skalierbarkeit, Leistung) und mögliche Fallstricke (Komplexität,

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

In diesem Artikel wird die Socket-API von Java für die Netzwerkkommunikation beschrieben, die das Setup des Client-Servers, die Datenbearbeitung und entscheidende Überlegungen wie Ressourcenverwaltung, Fehlerbehandlung und Sicherheit abdeckt. Es untersucht auch die Leistungsoptimierungstechniken, ich
