How to convert a Map to List in Java?
Solution 1
List<Value> list = new ArrayList<Value>(map.values());
assuming:
Map<Key,Value> map;
Solution 2
The issue here is that Map
has two values (a key and value), while a List
only has one value (an element).
Therefore, the best that can be done is to either get a List
of the keys or the values. (Unless we make a wrapper to hold on to the key/value pair).
Say we have a Map
:
Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");
The keys as a List
can be obtained by creating a new ArrayList
from a Set
returned by the Map.keySet
method:
List<String> list = new ArrayList<String>(m.keySet());
While the values as a List
can be obtained creating a new ArrayList
from a Collection
returned by the Map.values
method:
List<String> list = new ArrayList<String>(m.values());
The result of getting the List
of keys:
Apple Another Hello
The result of getting the List
of values:
3.14 Element World
Solution 3
Using the Java 8 Streams API.
List<Value> values = map.values().stream().collect(Collectors.toList());
Solution 4
map.entrySet()
gives you a collection of Map.Entry
objects containing both key and value. you can then transform this into any collection object you like, such as new ArrayList(map.entrySet())
;
Solution 5
a list of what ?
Assuming map
is your instance of Map
map.values()
will return aCollection
containing all of the map's values.map.keySet()
will return aSet
containing all of the map's keys.
Admin
Updated on December 17, 2021Comments
-
Admin over 2 years
What is the best way to convert a
Map<key,value>
to aList<value>
? Just iterate over all values and insert them in a list or am I overlooking something?