如何在Java中转换一个映射到列表?

How to convert a Map to List in Java?

Map转换为List的最佳方法是什么?只需遍历所有值并将它们插入到列表中,或者我忽略了一些内容?


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

假设:

ZZU1


这里的问题是有两个价值(一个关键和价值),而只有一个价值(一个要素)。

因此,可以做的最好的事情是给她一个EDOCX1[…]的关键或价值。(Unless we make a wrapper to hold on the key/value pair).

说我们有一个map

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

The keys as a Listcan be obtained by creating a new ArrayListfrom a Setreturned by the Map.keySetmethod:

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

While the values as a Listcan be obtained creating a new ArrayListfrom a Collectionreturned by the Map.valuesmethod:

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

The result of getting the Listof keys:

1
2
3
Apple
Another
Hello

The result of getting the Listof values:

1
2
3
3.14
Element
World


使用爪哇8大街API。

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


给你一个EDOCX1的收藏然后你可以把这个变成任何你喜欢的对象,如new ArrayList(map.entrySet())


什么清单?

假设你的程序是map

  • 3.Will return a Collectioncontaining all of the map's values.
  • 将把所有地图的钥匙都归还给EDOCX1&5。

我猜你想把map中包含的价值转换成List中的值。简单的是叫values()方法的界面。这将回到Collection中包含的价值对象。

注:此Collection是由map反馈到map的对象和任何变化将在这里反射。所以,如果你想要一个分隔的拷贝,而不是你的mapObject,simply create a new ListObject like an ArrayListpassing the value Collectionas below.

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


你可以这样做

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


如果你想确保List的结果的价值是在Map的输入的关键顺序中,你需要"通过SortedMap去"。

在转换到List之前,以混凝土SortedMap开始执行(如TreeMap或插入map进入SortedMap。E.G.:

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

除此之外,你还将得到与自然钥匙指令(尝试EDOCX1〕或ConcurrentHashMap相反的东西。


1
2
3
4
5
6
7
    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);

我们可以在列表中都有密钥和增值对,也可以用地图来获得密钥和增值。通过列表中的列表来输入。


1
2
3
4
5
6
7
8
9
// 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());    
}

这是获取地图价值的一般方法。

1
2
3
4
5
6
7
8
9
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;
}


1
2
3
4
5
6
7
8
9
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());
}

1
2
3
4
5
6
7
8
9
"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());
 }"