如何将Map<key,value>转换为List<value>?我应该遍历所有映射值并将其插入列表吗?


当前回答

列出了什么?

假设map是map的实例

map.values()将返回一个包含所有map值的Collection。map.keySet()将返回一个包含贴图所有键的Set。

其他回答

列出了什么?

假设map是map的实例

map.values()将返回一个包含所有map值的Collection。map.keySet()将返回一个包含贴图所有键的Set。

// 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());    
}
public List<Object> convertMapToList(Map<Object, Object> map){
return new ArrayList<>(map.values());
}

这里的问题是Map有两个值(键和值),而List只有一个值(元素)。

因此,最好的方法是获取键或值的列表。(除非我们制作一个包装器来保存键/值对)。

假设我们有一张地图:

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

可以通过从Map.keySet方法返回的Set创建一个新的ArrayList来获得作为List的键:

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

虽然可以从Map.values方法返回的Collection创建一个新的ArrayList来获得List形式的值:

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

获取密钥列表的结果:

Apple
Another
Hello

获取值列表的结果:

3.14
Element
World

如果您想确保结果列表<值>中的值按照输入Map<键,值>的键顺序,则需要以某种方式“通过”SortedMap。

要么从具体的SortedMap实现(如TreeMap)开始,要么在将输入Map转换为List之前将其插入SortedMap。例如。:

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

否则,您将获得Map实现提供的任何本机排序,这通常可以是自然键排序以外的其他排序(请尝试Hashtable或ConcurrentHashMap,以获取多样性)。