Hier ist eine Zusammenfassung, wie Map (HashMap) mit Wert in Java sortiert wird. Hier betrachten wir eine Situation, in der Sie die Werte von A_array gleichzeitig mit B_array sortieren möchten. Da die Liste nach dem Eintragstyp HashMap sortiert wird, kann sie mit anderen Maps wie TreeMap verwendet werden.
Solution.java
import java.util.*;
class Solution {
public static void main(String[] args) {
int[] A_array = {1,6,3,10,5};
int[] B_array = {8,21,13,4,5};
tryComperator(A_array, B_array);
}
public static void tryComperator(int[] a, int[] b){
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
//Speichern Sie die Elemente des Arrays in einer Hashmap.
for (int i = 0; i < a.length; i++){
map.put(a[i], b[i]);
}
//Speichern Sie jedes Element von Hashmap in einer Liste.
List<Map.Entry> mapValuesList = new ArrayList<Map.Entry>(map.entrySet());
//Versuchen Sie, mapValuesList auszugeben.(10=Es scheint, dass es in Form von 4 ausgegeben wird.)
for (Map.Entry v: mapValuesList){
System.out.println("map>> "+v+",key>> "+v.getKey()+"value>> "+v.getValue());
}
//Instanziieren Sie die Comparator-Klasse
Comparator<Map.Entry> comparator = new Comparator<Map.Entry>() {
public int compare(Map.Entry entry1, Map.Entry entry2) {
return ((Integer) entry1.getValue()).compareTo((Integer) entry2.getValue());
}
};
//Mit Komparator sortieren.
Collections.sort(mapValuesList, comparator);
//Ausgabe zur Bestätigung
for (Map.Entry s : mapValuesList) {
System.out.println(s);
}
}
}
map>> 1=8,key>> 1value>> 8
map>> 3=13,key>> 3value>> 13
map>> 5=5,key>> 5value>> 5
map>> 6=21,key>> 6value>> 21
map>> 10=4,key>> 10value>> 4
10=4
5=5
1=8
3=13
6=21
Es wurde in aufsteigender Reihenfolge des Wertes ausgegeben.
Referenz: http://kevin3sei.blog95.fc2.com/blog-entry-159.html
Recommended Posts