Als Eingang, ich habe Liste der Objekte hat jeder Objektname und Karte:Sortieren Java Karte basierend auf Werten in einer anderen Karte
1)
Name: m1
Map: {"c1": 3,
"c2": 24
"c3": 12}
2) Name: m2
Map: {"c1": "A",
"c2": "B",
"c3": "C"}
3) Name: m3
Map: {"c1": 3.4,
"c2": 4.6,
"c3": 12.3}
Was ich als Ausgang brauche, ich brauche alle 3 zu sortieren Karten basierend auf Werten in der Karte mit dem Namen m1.
Also zuerst möchte ich in absteigender Aufträge Karte für Objekt # 1 (m1) von Werten sortieren (ich hier verwenden LinedHashMap können):
{"c1": 3, "c2": 24, "c3": 12} => {"c2": 24, "c3": 12, "c1": 3}
Und jetzt möchte ich Elemente in Karte für Objekt # 2 und Karte für Objekt # 3, auch in den gleichen Tastenordnungen sortiert - C2, C3, C1. Also im Grunde möchte ich 2 Karten reorder so, dass Reihenfolge ist C2, C3, C1 (die gleiche Reihenfolge wie in m1), und NICHT C1, C2, C3.
Wie kann ich es am elegantesten tun? Ich habe einige Lösungen - aber sie sind chaotisch und haben viele zusätzliche Schritte.
Wenn es wichtig ist: diese Liste wird immer nur 3 Objekte haben. Anzahl der Elemente in Map kann unterschiedlich sein, aber Schlüssel in Karten werden immer über 3 Karten hinweg gleich sein.
@ram. 'TreeMap' kann sortiert werden. – tsolakp
@tsolakp Nein, kann es nicht. Es ist * bereits auf seinen Schlüsseln sortiert. Sie können Karten nicht nach ihren Werten sortieren. – EJP