如何将Map<key,value>转换为List<value>?我应该遍历所有映射值并将其插入列表吗?
当前回答
// 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());
}
其他回答
map.entrySet()提供了一个包含键和值的map.Entry对象集合。然后,您可以将其转换为任何您喜欢的集合对象,例如newArrayList(map.entrySet());
这里的问题是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
如果需要值的不可变副本:
List<Value> list = List.copyOf(map.values())
// 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());
}
列出了什么?
假设map是map的实例
map.values()将返回一个包含所有map值的Collection。map.keySet()将返回一个包含贴图所有键的Set。
推荐文章
- Eclipse调试器总是阻塞在ThreadPoolExecutor上,没有任何明显的异常,为什么?
- Java生成两个给定值之间的随机数
- 如何有效地从数组列表或字符串数组中删除所有空元素?
- 比较JUnit断言中的数组,简洁的内置方式?
- 在每个列表元素上调用int()函数?
- codestyle;把javadoc放在注释之前还是之后?
- 如何在Spring中定义List bean ?
- 将Set<T>转换为List<T>的最简洁的方法
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用Java重命名文件
- URL从Java中的类路径加载资源
- .toArray(new MyClass[0]) or .toArray(new MyClass[myList.size()])?
- Hibernate中不同的保存方法之间有什么区别?
- Java 8流和数组操作
- 在Python中插入列表的第一个位置