如何将Map<key,value>转换为List<value>?我应该遍历所有映射值并将其插入列表吗?
当前回答
下面是从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;
}
其他回答
// 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());
}
List<Value> list = new ArrayList<Value>(map.values());
假设:
Map<Key,Value> map;
列出了什么?
假设map是map的实例
map.values()将返回一个包含所有map值的Collection。map.keySet()将返回一个包含贴图所有键的Set。
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有两个值(键和值),而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
推荐文章
- 将double类型转换为字符串
- Java关联数组
- 将所有非字母数字字符替换为空字符串
- 漂亮地打印Java集合(toString不返回漂亮输出)
- 静态嵌套类在Java,为什么?
- 如何防止Eclipse在启动时挂起?
- Optional和Optional的区别是什么?flatMap和Optional.map?
- Java中枚举的命名:单数还是复数?
- 如何在Python中直接获得字典键作为变量(而不是通过从值搜索)?
- JavaBean和POJO之间的区别是什么?
- 注释在Java中如何使用,在哪里使用?
- 我怎么能找到一个列表<>的最后一个元素?
- 如何在Ubuntu下安装JDK 11 ?
- Spring Boot -无法确定数据库类型为NONE的嵌入式数据库驱动程序类
- 如何将字典保存到文件?