802 Stimmen

Wie konvertiert man in Java eine Karte in eine Liste?

Wie konvertiert man am besten eine Map<key,value> zu einer List<value> ? Einfach alle Werte durchlaufen und in eine Liste einfügen oder übersehe ich etwas?

1 Stimmen

Ich denke, es ist kein gutes Modell, wenn man eine Karte in eine Liste umwandeln muss. Man sollte den Code so schreiben, dass diese Situation nicht eintritt.

15voto

maneesh Punkte 1052

Ich vermute, Sie wollen die Werte in der Datei Map zu einer list ? Am einfachsten ist der Aufruf der values() Methode der Map Schnittstelle. Dies gibt die Collection von Wertobjekten, die in der Map .

Beachten Sie, dass diese Collection wird unterstützt von der Map Objekt und alle Änderungen an der Map Objekt wird hier reflektiert. Wenn Sie also eine separate Kopie wünschen, die nicht an Ihr Map Objekt, erstellen Sie einfach ein neues List Objekt wie ein ArrayList Übergabe des Wertes Collection wie unten.

ArrayList<String> list = new ArrayList<String>(map.values());

10voto

user3752441 Punkte 109

So kann man es machen

List<Value> list = new ArrayList<Value>(map.values());

8voto

user11 Punkte 189
    Map<String, Integer> map = new HashMap<String, Integer>();
    map.put("java", 20);
    map.put("C++", 45);

    Set <Entry<String, Integer>> set = map.entrySet();

    List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);

Wir können sowohl Schlüssel als auch Wertpaare in der Liste haben und können auch Schlüssel und Wert mit Map.Entry durch Iteration über die Liste erhalten.

6voto

M0les Punkte 101

Wenn Sie sicherstellen wollen, dass die Werte in der resultierenden List<Value> sind in der Schlüsselreihenfolge der Eingabe Map<Key, Value> müssen Sie "über" gehen. SortedMap irgendwie.

Entweder Start mit einem konkreten SortedMap Implementierung (wie z.B. TreeMap ) oder geben Sie Ihre Eingabe ein Map in eine SortedMap vor der Konvertierung in List . z.B.:

Map<Key,Value> map;
List<Value> list = new ArrayList<Value>( new TreeMap<Key Value>( map ));

Andernfalls erhalten Sie die native Bestellung der Map Implementierung zur Verfügung stellt, was oft etwas anderes sein kann als die natürliche Schlüsselreihenfolge (Versuchen Sie Hashtable o ConcurrentHashMap , zur Abwechslung).

5voto

saurabhgoyal795 Punkte 1147
// you can use this
List<Value> list = new ArrayList<Value>(map.values());

// or you may use 
List<Value> list = new ArrayList<Value>();
for (Map.Entry<String, String> entry : map.entrySet())
{
list.add(entry.getValue());    
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X