什么是最好的方式来转换一个 Map<key,value> 来一个 List<value>?只是迭代所有价值观,并插入他们在一个列表或者我可以俯瞰的东西吗?

有帮助吗?

解决方案

List<Value> list = new ArrayList<Value>(map.values());

假设:

Map<Key,Value> map;

其他提示

这里的问题是 Map 有两个值(一个键和一个值),而一个 List 只有一个值(一个元素)。

因此,可以做的最好的事情是获得ArrayList键或值。 (除非我们使用包装器来保持键/值对)。

假设我们有Set

Map<String, String> m = new HashMap<String, String>();
m.put("Hello", "World");
m.put("Apple", "3.14");
m.put("Another", "Element");

可以通过创建新的Map.keySet键。来自的“noreferrer”> Collection Map.values > <=> 方法:

List<String> list = new ArrayList<String>(m.keySet());

虽然可以从,但可以获得<=>的值.html“rel =”noreferrer“> <=> <=> 方法:

List<String> list = new ArrayList<String>(m.values());

获取<=>键的结果:

Apple
Another
Hello

获取<=>值的结果:

3.14
Element
World

使用Java 8 Streams API。

List<Value> values = map.values().stream().collect(Collectors.toList());

map.entrySet()为您提供包含键和值的Map.Entry对象的集合。然后,您可以将其转换为您喜欢的任何集合对象,例如new ArrayList(map.entrySet());

什么名单?

假设 map 是你的实例 Map

  • map.values() 将返回 Collection 包含所有的地图的数值。
  • map.keySet() 将返回 Set 包含所有的地图的钥匙。

我想你想将Map中包含的值转换为list?最简单的方法是调用values()接口的Collection方法。这将返回List中包含的ArrayList值对象。

请注意,此<=>由<=>对象支持,对<=>对象的任何更改都将在此处反映出来。因此,如果您想要一个未绑定到<=>对象的单独副本,只需创建一个新的<=>对象,如<=>传递值<=>,如下所示。

ArrayList<String> list = new ArrayList<String>(map.values());

你可以这样做

List<Value> list = new ArrayList<Value>(map.values());

如果您想确保结果List<Value>中的值在输入Map<Key, Value>的键排序中,您需要<!>“;通过<!>”; SortedMap以某种方式。

使用具体的TreeMap实现(例如Map启动,或者在将其转换为List之前将输入Hashtable插入ConcurrentHashMap。 e.g:

Map<Key,Value> map;
List<Value> list = new ArrayList<Value>( new TreeMap<Key Value>( map ));

否则,您将获得<=>实现提供的任何原生订单,这通常不是自然键排序(尝试<=>或<=>,以获得多样性)。

    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获取键和值。

// 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());
 } "

这是从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;
}
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());
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top