如何将Map<key,value>转换为List<value>?我应该遍历所有映射值并将其插入列表吗?
当前回答
Map<String, String > map = new HapshMap<String, String>;
map.add("one","java");
map.add("two", "spring");
Set<Entry<String, String>> set = map.entrySet();
List<Entry<String, String>> list = new ArrayList<Entry<String, String>> (set);
for(Entry<String, String> entry : list) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
其他回答
下面是从map中获取值的通用方法。
public static <T> List<T> ValueListFromMap(HashMap<String, T> map) {
List<T> thingList = new ArrayList<>();
for (Map.Entry<String, T> entry : map.entrySet()) {
thingList.add(entry.getValue());
}
return thingList;
}
使用Java 8 Streams API。
List<Value> values = map.values().stream().collect(Collectors.toList());
List<Value> list = new ArrayList<Value>(map.values());
假设:
Map<Key,Value> map;
我猜你想将地图中包含的值转换为列表?最简单的方法是调用Map接口的values()方法。这将返回Map中包含的值对象的集合。
请注意,此集合由Map对象支持,对Map对象的任何更改都将反映在此处。因此,如果您希望一个单独的副本不绑定到Map对象,只需创建一个新的List对象,如ArrayList,传递值Collection,如下所示。
ArrayList<String> list = new ArrayList<String>(map.values());
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);
我们可以在列表中同时使用键和值对。也可以通过迭代列表使用Map.Entry获取键和值。