Heim  >  Artikel  >  Java  >  Implementierungsmethode der JavaMap-Sortierung nach Wert

Implementierungsmethode der JavaMap-Sortierung nach Wert

高洛峰
高洛峰Original
2017-01-19 09:48:041824Durchsuche

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

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

Nach Schlüssel sortieren

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. Die Sortierung kann durch Implementierung der öffentlichen Vergleichsmethode (T o1, To2) dieser Schnittstelle erreicht werden.

Hinweis: Die folgenden Codes wurden in Jdk1.6 getestet

TreeMap ist standardmäßig in aufsteigender Reihenfolge nach Schlüssel sortiert

public static void keyUpSort() {
// 默认情况,TreeMap按key升序排序
Map<String, Integer> map = new TreeMap<String, Integer>();
map.put("acb1", 5);
map.put("bac1", 3);
map.put("bca1", 20);
map.put("cab1", 80);
map.put("cba1", 1);
map.put("abc1", 10);
map.put("abc2", 12);
// 默认情况下,TreeMap对key进行升序排序
System.out.println("------------正常情况,TreeMap按key升序排序--------------------");
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}

Ändern die Sortierung der TreeMap-Methode, nach Schlüssel in absteigender Reihenfolge sortieren

public static void keyDownSort() {
// TreeMap,按key降序排序
// 降序排序比较器
Comparator<String> keyComparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
return o2.compareTo(o1);
}
};
Map<String, Integer> map = new TreeMap<String, Integer>(keyComparator);
map.put("acb1", 5);
map.put("bac1", 3);
map.put("bca1", 20);
map.put("cab1", 80);
map.put("cba1", 1);
map.put("abc1", 10);
map.put("abc2", 12);
System.out.println("------------TreeMap按key降序排序--------------------");
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}

Nach Wert sortieren

Das Folgende zeigt nur die Sortierung nach Wert in Aufsteigende Reihenfolge nach TreeMap, was auch für HashMap gilt.

Ändern Sie die Sortiermethode von TreeMap und sortieren Sie in aufsteigender Reihenfolge des Werts

Hinweis: Unter normalen Umständen kann die Karte nicht mit der Methode Collections.sort() sortiert werden, Sie können die Karte jedoch konvertieren in eine Liste einfügen.

public static void valueUpSort() {
// 默认情况,TreeMap按key升序排序
Map<String, Integer> map = new TreeMap<String, Integer>();
map.put("acb1", 5);
map.put("bac1", 3);
map.put("bca1", 20);
map.put("cab1", 80);
map.put("cba1", 1);
map.put("abc1", 10);
map.put("abc2", 12);
// 升序比较器
Comparator<Map.Entry<String, Integer>> valueComparator = new Comparator<Map.Entry<String,Integer>>() {
@Override
public int compare(Entry<String, Integer> o1,
Entry<String, Integer> o2) {
// TODO Auto-generated method stub
return o1.getValue()-o2.getValue();
}
};
// map转换成list进行排序
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String,Integer>>(map.entrySet());
// 排序
Collections.sort(list,valueComparator);
// 默认情况下,TreeMap对key进行升序排序
System.out.println("------------map按照value升序排序--------------------");
for (Map.Entry<String, Integer> entry : list) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}

Testergebnisse

------------正常情况,TreeMap按key升序排序--------------------
abc1:10
abc2:12
acb1:5
bac1:3
bca1:20
cab1:80
cba1:1
------------TreeMap按key降序排序--------------------
cba1:1
cab1:80
bca1:20
bac1:3
acb1:5
abc2:12
abc1:10
------------map按照value升序排序--------------------
cba1:1
bac1:3
acb1:5
abc1:10
abc2:12
bca1:20
cab1:80

Das Obige ist die vom Herausgeber eingeführte Java-Karte. Die Implementierung Ich hoffe, dass die Methode zum Sortieren nach Wert für alle hilfreich ist. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der chinesischen PHP-Website bedanken!

Weitere Artikel zur Implementierungsmethode der JavaMap-Sortierung nach 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