我如何将 Map<key,value>
转换为 List<value>
?我应该遍历所有的 map 值并将它们插入到一个列表中吗?
我如何将 Map<key,value>
转换为 List<value>
?我应该遍历所有的 map 值并将它们插入到一个列表中吗?
List<Value> list = new ArrayList<Value>(map.values());
假设:
Map<Key,Value> map;
Collection
转换成List
的转换会起作用。 - asgskeySet()
和 values()
返回的集合通常是提供底层结构的 Set 或 Collection 视图的 shim 对象(keySet()
返回 Set 是为了强调没有重复项)。对于 values()
,返回的对象可能是一个 List
,但通常不是。像你所说的创建一个真正的 List 会打破链接,这意味着你不再依赖原始 Map。然而,有时你只需要一个 List,因为某些 API 需要它 - 这强化了一个好的 API 应该尽可能地要求最抽象的接口的规则... - SusanWMap
有两个值(一个键和一个值),而 List
只有一个值(一个元素)。List
。(除非我们制作一个包装器来持有键/值对)。Map
: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());
虽然值可以作为List
获得,但需要从Map.values
方法返回的Collection
创建一个新的ArrayList
:
List<String> list = new ArrayList<String>(m.values());
获取键的List
的结果:
苹果 另一个 你好
获取值的List
的结果:
3.14 Element World
HashMap
和类似的未排序的Map
实现来说,它将是有效地随机的。 - Joachim SauerList<Value> values = map.values().stream().collect(Collectors.toList());
List values = new ArrayList<>(map.values());
- pincoinmap.entrySet()
方法可以获取包含键值对的 Map.Entry
对象的集合,你可以将其转换为任何你喜欢的集合对象,例如 new ArrayList(map.entrySet())
;
map.values()
将返回一个包含映射中所有值的集合Collection
。map.keySet()
将返回一个包含映射中所有键的Set
。我猜你想把Map
里的值转换成一个list
?最简单的方法是调用Map
接口的values()
方法。这将返回包含在Map
中的值对象的Collection
。
请注意,这个Collection
是由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获取键和值。
List<Value>
值按照输入Map<Key, Value>
的键排序,您需要以某种方式“通过”SortedMap
进行操作。可以选择从具体的SortedMap
实现(例如TreeMap
)开始,或者在将输入Map
转换为List
之前将其插入到SortedMap
中。例如:Map<Key,Value> map;
List<Value> list = new ArrayList<Value>( new TreeMap<Key Value>( map ));
Map
实现提供的任何本地排序,这通常不是自然键排序(尝试 Hashtable
或 ConcurrentHashMap
,以获取多样性)。// 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<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());
}