什么是转换的最佳途径Map<key,value>
到List<value>
? 只是遍历所有的值,并在列表中插入他们还是我忽视的东西?
Answer 1:
List<Value> list = new ArrayList<Value>(map.values());
假设:
Map<Key,Value> map;
Answer 2:
这里的问题是, Map
有两个值(键和值),而List
只有一个值(元素)。
因此,可以做到最好的是要么得到一个List
或键的值。 (除非我们做一个包装扶住键/值对)。
假设我们有一个Map
:
Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");
作为该键List
可以通过创建一个新获得ArrayList
从Set
由返回Map.keySet
方法:
List<String> list = new ArrayList<String>(m.keySet());
而作为一个值List
可以得到创建一个新ArrayList
从Collection
由返回Map.values
方法:
List<String> list = new ArrayList<String>(m.values());
得到的结果List
键:
Apple Another Hello
得到的结果List
值:
3.14 Element World
Answer 3:
使用Java 8流API。
List<Value> values = map.values().stream().collect(Collectors.toList());
Answer 4:
map.entrySet()
为您提供了一个集合Map.Entry
对象含有键和值。 那么你就可以变身为你喜欢的,如任何集合对象这个new ArrayList(map.entrySet())
;
Answer 5:
一个什么样的名单?
假设map
是你的实例Map
-
map.values()
将返回一个Collection
包含所有地图的价值观。 -
map.keySet()
将返回一个Set
包含所有地图的钥匙。
Answer 6:
我猜你要包含在该值转换Map
到一个list
? 最简单的是调用values()
的方法Map
界面。 这将返回Collection
中包含的值对象的Map
。
请注意,这Collection
是由支持Map
对象和对任何更改Map
对象将体现在这里。 所以,如果你想有一个单独的副本不会绑定到你的Map
对象,只需创建一个新的List
类似于对象ArrayList
传递值Collection
如下。
ArrayList<String> list = new ArrayList<String>(map.values());
Answer 7:
你可以像下面这样做
List<Value> list = new ArrayList<Value>(map.values());
Answer 8:
如果你想以确保结果的值List<Value>
在输入的按键排序Map<Key, Value>
,你需要“通过走出去” SortedMap
莫名其妙。
无论是用混凝土开始 SortedMap
实现(如TreeMap
),或者将您的输入Map
为SortedMap
转化,为之前List
。 例如:
Map<Key,Value> map;
List<Value> list = new ArrayList<Value>( new TreeMap<Key Value>( map ));
否则,你会得到什么本地排序的Map
实现提供,而这往往是比自然键排序(尝试其他东西Hashtable
或ConcurrentHashMap
,对品种)。
Answer 9:
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);
我们可以在list.Also key和value对可以通过遍历列表得到键和值使用的Map.Entry。
Answer 10:
// 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());
}
Answer 11:
"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());
} "
Answer 12:
这里的通用方法从地图获取值。
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;
}
Answer 13:
HashMap<Integer, List<String>> map = new HashMap<>();
List<String> list = new ArrayList<String>();
list.add("Java");
list.add("Primefaces");
list.add("JSF");
map.put(1,list);
if(map != null){
return new ArrayList<String>((Collection<? extends String>) map.values());
}