Ich habe Probleme beim Sortieren der folgenden Schlüsselwerte (Map). Berücksichtigen Sie, dass das Sortieren des Schlüssels wie erwartet mein Problem löst.So sortieren Sie hierarchische Schlüssel der Kartensammlung?
Erwarteter Ausgang
Key Value
1 animal
1.1 dog
1.1.1 tommy
1.1.2 Lily
1.1.10 Sadie
1.2 cat
1.3 camel
1.3.2 camel2
1.3.11 camel11
Ich versuchte TreeMap aber es sortiert jedes Zeichen Nummer. was wird stattdessen dort verwendet, wenn es erforderlich ist, die ganze Zahl in String zu sortieren. Ich möchte etwas wie oben erwähnt in der erwarteten Ausgabe.
TreeMap<String, String> data = new TreeMap<String, String>();
data.put("1", "animal");
data.put("1.1", "dog");
data.put("1.2", "cat");
data.put("1.3", "camel");
data.put("1.3.2", "camel2");
data.put("1.3.11", "camel11");
data.put("1.1.1", "tommy");
data.put("1.1.2", "Lily");
data.put("1.1.10", "Sadie");
SortedSet<String> keys = new TreeSet<String>(data.keySet());
System.out.println("Key Value");
for(String key: keys){
System.out.println(key+" "+data.get(key));
Tatsächliche Ausgabe
Key Value
1 animal
1.1 dog
1.1.1 tommy
1.1.10 Sadie
1.1.2 Lily
1.2 cat
1.3 camel
1.3.11 camel11
1.3.2 camel2
zu bekommen Dies aufgrund einer String Sortierung verursacht wird. 1.1.10 ist kleiner als 1.1.2. Vielleicht versuchen, die Zeichenfolge in Zahlen zu konvertieren und nur dann den Vergleich zu machen? Die erste Lösung, die mir in den Sinn kommt, ist, alle Punkte zu entfernen und dann nach Ganzzahl zu sortieren. So: 1110 wird größer als 112 und Ihre Ausgabe wird wie erwartet sein. – lazary
Mögliches Duplikat von [Java: Einträge für Inhaltsverzeichnis sortieren] (http://stackoverflow.com/questions/29608890/java-sort-entries-for-table-of-contents) –