Verwenden Sie TreeMap zum Sortieren:
%Vor%Ich habe einige Daten in eine Java Hashtable eingefügt. Wenn ich die Daten von der Hashtable lese, kommt sie nicht in der Reihenfolge zurück, in der ich sie eingefügt habe. Wie bekomme ich die geordneten Daten von der Hashtable?
Ich verwende den folgenden Code, um die Werte aus der Hashtabelle zu erhalten:
%Vor%Ich habe einige Daten in eine Java Hashtable eingefügt. Wenn ich die Daten von der Hashtable lese, kommt sie nicht in der Reihenfolge zurück, in der ich sie eingefügt habe. Wie bekomme ich die geordneten Daten von der Hashtable?
Ich verwende den folgenden Code, um die Werte aus der Hashtabelle zu erhalten:
%Vor% A LinkedHashMap
hat keine vorhersagbare Iterationsreihenfolge und kann nicht sortiert werden. Wenn Sie nur eine vorhersagbare Iterationsreihenfolge wünschen, sollten Sie eine k
. Wenn Sie Ihre m
sortieren möchten, sollten Sie eine m.put(k, v)
.
Obwohl ein m.containsKey(k)
nicht sortiert werden kann, fragt er, wie man Daten sortiert, indem man die Liste der aus HashMap
extrahierten Schlüssel sortiert und Werte in dieser Reihenfolge abruft.
Etwas wie:
geht es gut.
Verwenden Sie TreeMap zum Sortieren:
%Vor%Wenn ich die Daten aus der Hash-Tabelle lese es kommt nicht in der gleichen Reihenfolge wie Ich habe eingefügt.
Ihre Frage ergibt keinen Sinn. Eine Hashtabelle hat keine "Reihenfolge", sie ist ungeordnet (Bearbeiten: Einige Implementierungen haben eine Reihenfolge, aber eine Hashtabelle ist nicht üblich) ..
In welcher Reihenfolge würden Sie die Einträge erwarten?
Wenn Sie Elemente in einer bestimmten Reihenfolge speichern möchten, müssen Sie eine Liste verwenden (z. B. eine Unterklasse von java.util.List).
Und übrigens, Ihr Codebeispiel enthält nicht einmal eine Hash-Tabelle.
Hashtable
ist eine Legacy-Sammlung, die 1998 durch Java-1.2-Sammlungen ersetzt wurde. Ich schlage vor, Sie vermeiden es zusammen mit TreeMap
und HashMap
.
Anstelle von Hashtable
verwenden Sie Hashtable
, wenn möglich. Sie können die Synchronisation mit ArrayList
hinzufügen, wenn Sie sie brauchen.
Anstelle von Vector
verwenden Sie TreeMap
, wenn möglich. Sie können die Synchronisation mit %code% hinzufügen, wenn Sie sie brauchen.
Anstelle von %code% können Sie %code% oder sogar eine %code% Schleife verwenden.
Wenn Sie eine bestellungserhaltende Karte wünschen, sollten Sie %code% verwenden. :
Hash-Tabelle und verkettete Listenimplementierung der Map-Schnittstelle mit vorhersagbarer Iterationsreihenfolge. Diese Implementierung unterscheidet sich von HashMap insofern, als sie eine doppelt verknüpfte Liste enthält, die alle Einträge durchläuft. Diese verkettete Liste definiert die Iterationsreihenfolge, bei der es sich normalerweise um die Reihenfolge handelt, in der Schlüssel in die Karte eingefügt wurden (Einfügereihenfolge). Beachten Sie, dass die Reihenfolge der Anzeigen nicht betroffen ist, wenn ein Schlüssel erneut in die Karte eingefügt wird. (Ein Schlüssel %code% wird erneut in eine Zuordnung %code% eingefügt, wenn %code% aufgerufen wird, wenn %code% unmittelbar vor dem Aufruf den Wert true zurückgibt.)
Diese Implementierung erspart ihren Clients die nicht spezifizierte, in der Regel chaotische Reihenfolge, die von %code% (und %code% ) bereitgestellt wird, ohne die mit %code% verbundenen erhöhten Kosten zu verursachen.
Beachten Sie, dass dies normalerweise mit %code% anstatt mit %code% verglichen wird - ich kenne kein bestellungskonservierendes Äquivalent zu %code% ; letzteres wird heutzutage sowieso nicht verwendet (genauso wie %code% normalerweise vor %code% verwendet wird).
Ich habe angenommen, dass Sie die -Einfügung Reihenfolge und nicht die sortierte Reihenfolge wünschen. Wenn Sie Letzteres möchten, verwenden Sie %code% .
>Ich habe eine ausgeklügelte Antwort zum Sortieren und zum geordneten Abrufen geschrieben von Maps in dieser vorherigen Frage:
A Hashtable
hat keine vorhersagbare Iterationsreihenfolge und kann nicht sortiert werden. Wenn Sie nur eine vorhersagbare Iterationsreihenfolge wünschen, sollten Sie eine LinkedHashMap
. Wenn Sie Ihre Map
sortieren möchten, sollten Sie eine TreeMap
.
Obwohl ein Hashtable
nicht sortiert werden kann, fragt er, wie man Daten sortiert, indem man die Liste der aus HashTable
extrahierten Schlüssel sortiert und Werte in dieser Reihenfolge abruft.
Etwas wie:
geht es gut.
Hashtable
ist eine Legacy-Sammlung, die 1998 durch Java-1.2-Sammlungen ersetzt wurde. Ich schlage vor, Sie vermeiden es zusammen mit Vector
und Enumeration
.
Anstelle von Hashtable
verwenden Sie HashMap
, wenn möglich. Sie können die Synchronisation mit Collections.synchronizedMap(map)
hinzufügen, wenn Sie sie brauchen.
Anstelle von Vector
verwenden Sie ArrayList
, wenn möglich. Sie können die Synchronisation mit Collections.synchronizedList(map)
hinzufügen, wenn Sie sie brauchen.
Anstelle von Enumeration
können Sie Iterator
oder sogar eine for-each
Schleife verwenden.
Ich habe einige Daten in eine Java Hashtable eingefügt. Wenn ich die Daten von der Hashtable lese, kommt sie nicht in der Reihenfolge zurück, in der ich sie eingefügt habe. Wie bekomme ich die geordneten Daten von der Hashtable?
Ich verwende den folgenden Code, um die Werte aus der Hashtabelle zu erhalten:
%Vor%A %code% hat keine vorhersagbare Iterationsreihenfolge und kann nicht sortiert werden. Wenn Sie nur eine vorhersagbare Iterationsreihenfolge wünschen, sollten Sie eine %code% . Wenn Sie Ihre %code% sortieren möchten, sollten Sie eine %code% .
Obwohl ein %code% nicht sortiert werden kann, fragt er, wie man Daten sortiert, indem man die Liste der aus %code% extrahierten Schlüssel sortiert und Werte in dieser Reihenfolge abruft. Etwas wie:
%Vor%geht es gut.
Verwenden Sie TreeMap zum Sortieren:
%Vor%Wenn ich die Daten aus der Hash-Tabelle lese es kommt nicht in der gleichen Reihenfolge wie Ich habe eingefügt.
Ihre Frage ergibt keinen Sinn. Eine Hashtabelle hat keine "Reihenfolge", sie ist ungeordnet (Bearbeiten: Einige Implementierungen haben eine Reihenfolge, aber eine Hashtabelle ist nicht üblich) ..
In welcher Reihenfolge würden Sie die Einträge erwarten?
Wenn Sie Elemente in einer bestimmten Reihenfolge speichern möchten, müssen Sie eine Liste verwenden (z. B. eine Unterklasse von java.util.List).
Und übrigens, Ihr Codebeispiel enthält nicht einmal eine Hash-Tabelle.
%code% ist eine Legacy-Sammlung, die 1998 durch Java-1.2-Sammlungen ersetzt wurde. Ich schlage vor, Sie vermeiden es zusammen mit %code% und %code% .
Anstelle von %code% verwenden Sie %code% , wenn möglich. Sie können die Synchronisation mit %code% hinzufügen, wenn Sie sie brauchen.
Anstelle von %code% verwenden Sie %code% , wenn möglich. Sie können die Synchronisation mit %code% hinzufügen, wenn Sie sie brauchen.
Anstelle von %code% können Sie %code% oder sogar eine %code% Schleife verwenden.
Wenn Sie eine bestellungserhaltende Karte wünschen, sollten Sie %code% verwenden. :
Hash-Tabelle und verkettete Listenimplementierung der Map-Schnittstelle mit vorhersagbarer Iterationsreihenfolge. Diese Implementierung unterscheidet sich von HashMap insofern, als sie eine doppelt verknüpfte Liste enthält, die alle Einträge durchläuft. Diese verkettete Liste definiert die Iterationsreihenfolge, bei der es sich normalerweise um die Reihenfolge handelt, in der Schlüssel in die Karte eingefügt wurden (Einfügereihenfolge). Beachten Sie, dass die Reihenfolge der Anzeigen nicht betroffen ist, wenn ein Schlüssel erneut in die Karte eingefügt wird. (Ein Schlüssel %code% wird erneut in eine Zuordnung %code% eingefügt, wenn %code% aufgerufen wird, wenn %code% unmittelbar vor dem Aufruf den Wert true zurückgibt.)
Diese Implementierung erspart ihren Clients die nicht spezifizierte, in der Regel chaotische Reihenfolge, die von %code% (und %code% ) bereitgestellt wird, ohne die mit %code% verbundenen erhöhten Kosten zu verursachen.
Beachten Sie, dass dies normalerweise mit %code% anstatt mit %code% verglichen wird - ich kenne kein bestellungskonservierendes Äquivalent zu %code% ; letzteres wird heutzutage sowieso nicht verwendet (genauso wie %code% normalerweise vor %code% verwendet wird).
Ich habe angenommen, dass Sie die -Einfügung Reihenfolge und nicht die sortierte Reihenfolge wünschen. Wenn Sie Letzteres möchten, verwenden Sie %code% .
>Ich habe eine ausgeklügelte Antwort zum Sortieren und zum geordneten Abrufen geschrieben von Maps in dieser vorherigen Frage:
Ich habe einige Daten in eine Java Hashtable eingefügt. Wenn ich die Daten von der Hashtable lese, kommt sie nicht in der Reihenfolge zurück, in der ich sie eingefügt habe. Wie bekomme ich die geordneten Daten von der Hashtable?
Ich verwende den folgenden Code, um die Werte aus der Hashtabelle zu erhalten:
%Vor%A %code% hat keine vorhersagbare Iterationsreihenfolge und kann nicht sortiert werden. Wenn Sie nur eine vorhersagbare Iterationsreihenfolge wünschen, sollten Sie eine %code% . Wenn Sie Ihre %code% sortieren möchten, sollten Sie eine %code% .
Obwohl ein %code% nicht sortiert werden kann, fragt er, wie man Daten sortiert, indem man die Liste der aus %code% extrahierten Schlüssel sortiert und Werte in dieser Reihenfolge abruft. Etwas wie:
%Vor%geht es gut.
Verwenden Sie TreeMap zum Sortieren:
%Vor%Wenn ich die Daten aus der Hash-Tabelle lese es kommt nicht in der gleichen Reihenfolge wie Ich habe eingefügt.
Ihre Frage ergibt keinen Sinn. Eine Hashtabelle hat keine "Reihenfolge", sie ist ungeordnet (Bearbeiten: Einige Implementierungen haben eine Reihenfolge, aber eine Hashtabelle ist nicht üblich) ..
In welcher Reihenfolge würden Sie die Einträge erwarten?
Wenn Sie Elemente in einer bestimmten Reihenfolge speichern möchten, müssen Sie eine Liste verwenden (z. B. eine Unterklasse von java.util.List).
Und übrigens, Ihr Codebeispiel enthält nicht einmal eine Hash-Tabelle.
%code% ist eine Legacy-Sammlung, die 1998 durch Java-1.2-Sammlungen ersetzt wurde. Ich schlage vor, Sie vermeiden es zusammen mit %code% und %code% .
Anstelle von %code% verwenden Sie %code% , wenn möglich. Sie können die Synchronisation mit %code% hinzufügen, wenn Sie sie brauchen.
Anstelle von %code% verwenden Sie %code% , wenn möglich. Sie können die Synchronisation mit %code% hinzufügen, wenn Sie sie brauchen.
Anstelle von %code% können Sie %code% oder sogar eine %code% Schleife verwenden.
Wenn Sie eine bestellungserhaltende Karte wünschen, sollten Sie %code% verwenden. :
Hash-Tabelle und verkettete Listenimplementierung der Map-Schnittstelle mit vorhersagbarer Iterationsreihenfolge. Diese Implementierung unterscheidet sich von HashMap insofern, als sie eine doppelt verknüpfte Liste enthält, die alle Einträge durchläuft. Diese verkettete Liste definiert die Iterationsreihenfolge, bei der es sich normalerweise um die Reihenfolge handelt, in der Schlüssel in die Karte eingefügt wurden (Einfügereihenfolge). Beachten Sie, dass die Reihenfolge der Anzeigen nicht betroffen ist, wenn ein Schlüssel erneut in die Karte eingefügt wird. (Ein Schlüssel %code% wird erneut in eine Zuordnung %code% eingefügt, wenn %code% aufgerufen wird, wenn %code% unmittelbar vor dem Aufruf den Wert true zurückgibt.)
Diese Implementierung erspart ihren Clients die nicht spezifizierte, in der Regel chaotische Reihenfolge, die von %code% (und %code% ) bereitgestellt wird, ohne die mit %code% verbundenen erhöhten Kosten zu verursachen.
Beachten Sie, dass dies normalerweise mit %code% anstatt mit %code% verglichen wird - ich kenne kein bestellungskonservierendes Äquivalent zu %code% ; letzteres wird heutzutage sowieso nicht verwendet (genauso wie %code% normalerweise vor %code% verwendet wird).
Ich habe angenommen, dass Sie die -Einfügung Reihenfolge und nicht die sortierte Reihenfolge wünschen. Wenn Sie Letzteres möchten, verwenden Sie %code% .
>Ich habe eine ausgeklügelte Antwort zum Sortieren und zum geordneten Abrufen geschrieben von Maps in dieser vorherigen Frage:
Ich habe eine ausgeklügelte Antwort zum Sortieren und zum geordneten Abrufen geschrieben von Maps in dieser vorherigen Frage: