如何将Map<key,value>转换为List<value>?我应该遍历所有映射值并将其插入列表吗?
当前回答
public List<Object> convertMapToList(Map<Object, Object> map){
return new ArrayList<>(map.values());
}
其他回答
下面是从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;
}
我猜你想将地图中包含的值转换为列表?最简单的方法是调用Map接口的values()方法。这将返回Map中包含的值对象的集合。
请注意,此集合由Map对象支持,对Map对象的任何更改都将反映在此处。因此,如果您希望一个单独的副本不绑定到Map对象,只需创建一个新的List对象,如ArrayList,传递值Collection,如下所示。
ArrayList<String> list = new ArrayList<String>(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,以获取多样性)。
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());
}
推荐文章
- 找到java类从哪里加载
- 从集合中随机选取一个元素
- 为什么x == (x = y)和(x = y) == x不一样?
- 什么Java 8流。收集等价物可在标准Kotlin库?
- 等待未来的名单
- 如何检查JSON键是否存在?
- 为什么MongoDB Java驱动在条件中使用随机数生成器?
- 即使从未抛出异常,使用try-catch块的代价是否昂贵?
- 什么时候我们应该使用观察者和可观察对象?
- Python中dict对象的联合
- Java中的split()方法对点(.)不起作用。
- 如何有效地比较两个无序列表(不是集合)?
- Eclipse调试器总是阻塞在ThreadPoolExecutor上,没有任何明显的异常,为什么?
- Java生成两个给定值之间的随机数
- 如何有效地从数组列表或字符串数组中删除所有空元素?