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.

1508voto

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

anzunehmen:

Map<Key,Value> map;

144voto

coobird Punkte 155882

Das Problem dabei ist, dass Map hat zwei Werte (einen Schlüssel und einen Wert), während ein List hat nur einen Wert (ein Element).

Daher ist das Beste, was man tun kann, entweder eine List der Schlüssel oder der Werte. (Es sei denn, wir machen einen Wrapper, um das Schlüssel/Wert-Paar zu behalten).

Angenommen, wir haben eine Map :

Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");

Die Schlüssel als List kann durch die Erstellung eines neuen ArrayList von einer Set zurückgegeben von der [Map.keySet](http://java.sun.com/javase/6/docs/api/java/util/Map.html#keySet()) Methode:

List<String> list = new ArrayList<String>(m.keySet());

Während die Werte als List erhalten, indem man eine neue ArrayList von einer Collection zurückgegeben von der [Map.values](http://java.sun.com/javase/6/docs/api/java/util/Map.html#values()) Methode:

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

Das Ergebnis der Ermittlung der List der Schlüssel:

Apple
Another
Hello

Das Ergebnis der Ermittlung der List von Werten:

3.14
Element
World

65voto

Matej Kormuth Punkte 1873

Verwendung der Java 8 Streams API.

List<Value> values = map.values().stream().collect(Collectors.toList());

29voto

java dude Punkte 281

map.entrySet() bietet Ihnen eine Sammlung von Map.Entry Objekte, die sowohl Schlüssel als auch Wert enthalten. Sie können diese dann in ein beliebiges Sammelobjekt umwandeln, wie z. B. new ArrayList(map.entrySet()) ;

26voto

Diego Amicabile Punkte 579

Eine Liste von was?

Angenommen, map ist Ihre Instanz von Map

  • map.values() gibt eine Collection die alle Werte der Karte enthält.
  • map.keySet() gibt eine Set die alle Schlüssel der Karte enthält.

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