Ich versuche, LinkedHashMap basierend auf seinen Werten zu sortieren. Was ich nicht verstehe, sind die Ergebnisse. Es scheint nur zwei Schlüssel für die Sortierung zu nehmen. Irgendwelche Hinweise darauf, was ich vermisse?LinkedHashMap Sortierung
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedHashMap<Integer, Integer> sorting = new LinkedHashMap<Integer, Integer>();
sorting.put(1, 100);
sorting.put(10, 100);
sorting.put(20, 200);
sorting.put(30, 100);
sorting.put(40, 100);
sorting.put(50, 200);
for (Entry<Integer, Integer> entry : sorting.entrySet()) {
Integer key = entry.getKey();
Integer value = entry.getValue();
System.out.println("LINKED UNSORTED === key: "+ key + '\t' + "Value: " + value);
// do stuff
}
Comparator<Integer> comparator = new ValueCom(sorting);
TreeMap<Integer, Integer> sortedMap =new TreeMap<Integer, Integer>(comparator);
sortedMap.putAll(sorting);
for (Entry<Integer, Integer> entry : sortedMap.entrySet()) {
Integer key = entry.getKey();
Integer value = entry.getValue();
System.out.println("SORTED === key: "+ key + '\t' + "Value: " + value);
// do stuff
}
}
}
class ValueCom implements Comparator<Integer> {
LinkedHashMap<Integer, Integer> map = new LinkedHashMap<Integer, Integer>();
public ValueCom(HashMap<Integer, Integer> map) {
this.map.putAll(map);
}
public int compare(Integer keyA, Integer keyB){
return map.get(keyB).compareTo(map.get(keyA));
}
}
Der Stromausgang wird über
LINKED UNSORTED === key: 1 Value: 100
LINKED UNSORTED === key: 10 Value: 100
LINKED UNSORTED === key: 20 Value: 200
LINKED UNSORTED === key: 30 Value: 100
LINKED UNSORTED === key: 40 Value: 100
LINKED UNSORTED === key: 50 Value: 200
SORTED === key: 20 Value: 200
SORTED === key: 1 Value: 100
wie vor ‚Karte‘ auf ‚TreeMap‘ Ergebnisse in der gleichen Ausgabe neu zu definieren. – Betafish
@Betafish Was meinst du mit "Karte neu definieren zu" TreeMap "" und warum hast du erwartet, dass es einen Unterschied macht? – Eran