Heim > Java > JavaBase > Hauptteil

Kann eine Karte in Java nach Schlüssel sortiert werden?

Freigeben: 2020-01-14 13:32:51
Original
4226 Leute haben es durchsucht

Kann eine Karte in Java nach Schlüssel sortiert werden?

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 kann solche Anforderungen erfüllen Die Methode TreeMap(Comparator 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)); 
        } 
    }
}
Nach dem Login kopieren

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 list, Comparator 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;
    }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage