Warum sortiert meine TreeMap nicht?

8

Ich habe TreeMap verwendet, wobei der Schlüssel ein String ist und der Wert vom Typ Integer ist. Wenn ich das Objekt Map ausgabe, wird nicht in sortierter Reihenfolge gedruckt.

Hier ist der Code, den ich benutzt habe:

%Vor%

Ich erwarte, dass die Ausgabe wie folgt sortiert wird:

  

map: {Hallo = 1, Welt = 2, Zertt = 5}

Aber stattdessen bekomme ich das:

  

map: {Hallo = 1, Zertt = 5, Welt = 2}

    
user3248186 22.12.2015, 07:41
quelle

5 Antworten

16

Bei der natürlichen Reihenfolge von String s wird zwischen Groß- und Kleinschreibung unterschieden, so dass Z vor w steht (alle Großbuchstaben stehen vor Kleinbuchstaben).

Verwenden Sie

%Vor%

für die Groß- / Kleinschreibung nicht beachten.

    
Eran 22.12.2015, 07:42
quelle
2

Javadoc sagt:

  

Die Map wird nach der natürlichen Reihenfolge ihrer Schlüssel sortiert, oder nach einem Komparator, der bei der Erstellung der Map zur Verfügung steht, abhängig davon, welcher Konstruktor verwendet wird.

EDIT: Erans Antwort ist richtig, String-Reihenfolge ist standardmäßig Groß-und Kleinschreibung.

    
Gaël J 22.12.2015 07:43
quelle
1

Vielleicht wird diese Information hilfreich sein.

  

In der Klasse TreeMap enthält Konstruktoren:

     
  1. TreeMap ()

  2.   
  3. TreeMap (Comparator comp)

  4.   
  5. TreeMap (Karte m)

  6.   
  7. TreeMap (SortedMap sm)

  8.   

Der erste Konstruktor erstellt eine Sammlung, in der alle Elemente enthalten sind   sind in natürlicher Reihenfolge ihrer Schlüssel sortiert.

     

Der zweite Konstruktor erstellt eine leere Sammlung, deren Elemente   die nach dem Gesetz sortiert werden, das in der   Übertragungskomparator.

     

Der dritte Konstruktor erstellt eine TreeMap basierend auf einer vorhandenen Map.

     

Der vierte Konstruktor erstellt eine TreeMap basierend auf der vorhandenen SortedMap,   Elemente davon werden nach dem übertragenen Gesetz sortiert   Sortierte Karte.

     

Beachten Sie, dass für die Sortierung die Schlüssel und nicht der Wert verwendet werden.

    
Sergey Lotvin 22.12.2015 07:49
quelle
1

Wie zuvor beantwortet, wird bei der natürlichen Reihenfolge der Zeichenfolge zwischen Groß- und Kleinschreibung unterschieden. Wenn Sie jedoch eine unwesentliche Reihenfolge wünschen, können Sie den Vergleicher als TreeMap-Konstruktorparameter angeben:

%Vor%

ps. Beachten Sie, dass bei der Verwendung von Groß- und Kleinschreibung in der Groß- / Kleinschreibung die Schlüssel auch unwesentlich sind:

%Vor%

Ergebnis ist 6 und Schlüssel ist Hello

    
D0dger 22.12.2015 07:49
quelle
0

Die Sortierung in Treemap basiert auf der natürlichen Reihenfolge der Schlüssel und nicht der Werte.

    
Avinash Kumar Pandey 22.12.2015 07:42
quelle

Tags und Links