ich habe ein hashmap wie folgt aus:In Java, sortieren Hash-Karte durch seine key.length()
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("java",4);
map.put("go",2);
map.put("objective-c",11);
map.put("c#",2);
jetzt will ich durch seine Schlüssellänge um diese Karte sortieren, wenn zwei Schlüssel gleich lang sind (zB Gehe und C# beide Länge 2), dann sortiert nach alphba Ordnung. so das Ergebnis i zu erhalten erwarten ist so etwas wie:
Drucker: Objective-c, 11 java, 4 C#, 2 gehen, 2
hier ist meine eigene attamp, aber es tut überhaupt arbeitet ...
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("java",4);
map.put("go",2);
map.put("objective-c",11);
map.put("c#",2);
Map<String,Integer> treeMap = new TreeMap<String, Integer>(
new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length().compareTo(s2.length());
}
}
);
tatsächlich die ‚compareTo‘ -Methode als rot erscheint (nicht kompilieren können) .... bitte jemand mir mit einigem Code Beispiel helfen ... ich bin ein wenig verwirrend mit, wie Komparator-Klasse verwendet wird, um compa anzupassen Re-Objekt ...
, wenn Sie Ihren Code ausführen, ist das Ergebnis {C# = 2, java = 4, Objective-C = 11}. Die Frage ist, wo ist das "gehen", 2? –
Es ist aufgrund der Tatsache, dass TreeMap Comparator und Komparator verwendet wird definiert, um 2 Strings gleicher Länge als gleich behandeln. Da OP mit TreeMap gespielt hat, habe ich seine Antwort erweitert, um nur den Comparator-Part zu korrigieren. – sol4me
oh cool was denkst du über meine Antwort? Da die Op nicht erwähnt, dass die Verwendung von Treemap ist zwingend erforderlich, habe ich einen anderen Stil verwendet –