Heim  >  Artikel  >  Java  >  Implementierungsmethode der Java Map-Sortierung nach Schlüssel und Wert

Implementierungsmethode der Java Map-Sortierung nach Schlüssel und Wert

高洛峰
高洛峰Original
2017-01-19 09:42:181641Durchsuche

1. Theoretische Vorbereitung

Map ist eine Sammlungsschnittstelle von Schlüssel-Wert-Paaren. Zu seinen Implementierungsklassen gehören hauptsächlich: HashMap, TreeMap, Hashtable und LinkedHashMap.

TreeMap: Eine NavigableMap-Implementierung basierend auf einem Rot-Schwarz-Baum, der je nach verwendeter Konstruktmethode 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.

2. Schlüsselsortierung

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. Durch die Implementierung der öffentlichen Vergleichsmethode (T o1, To2) dieser Schnittstelle kann eine Sortierung wie folgt erreicht werden:

import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
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("b", "ccccc");
    map.put("d", "aaaaa");
    map.put("c", "bbbbb");
    map.put("a", "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 laufenden Ergebnisse sind wie folgt:

d:aaaaa
c:bbbbb
b:ccccc
a:ddddd

3. Wertsortierung

Das obige Beispiel dient der Sortierung nach dem Schlüsselwert von TreeMap, aber manchmal müssen wir nach dem Wert von TreeMap sortieren. Um Werte zu sortieren, müssen wir die Methode sort(List8742468051c85b06f0a0af9e3e506b5c list, Comparator117c5a0bdb71ea9a9d0c2b99b03abe3e c) von Collections verwenden, die die angegebene Liste entsprechend der vom angegebenen Komparator generierten Reihenfolge sortiert. Es gibt jedoch eine Voraussetzung, das heißt, alle Elemente müssen gemäß dem bereitgestellten Komparator wie folgt verglichen werden:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class TreeMapTest {
  public static void main(String[] args) {
    Map<String, String> map = new TreeMap<String, String>();
    map.put("a", "ddddd");
    map.put("c", "bbbbb");
    map.put("d", "aaaaa");
    map.put("b", "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()); 
     } 
  }
}

Die laufenden Ergebnisse sind wie folgt:

d:aaaaa
c:bbbbb
b:ccccc
a:ddddd

Die oben genannten Java Map-Implementierungsmethoden zum Sortieren nach Schlüssel und zum Sortieren nach Wert sind alle vom Herausgeber geteilten Inhalte. Ich hoffe, dass sie Ihnen eine Referenz geben können, und ich hoffe, dass Sie die chinesische PHP-Website unterstützen.

Weitere Java Map-Implementierungsmethoden zum Sortieren nach Schlüssel und Wert finden Sie auf der chinesischen PHP-Website!


Stellungnahme:
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