Map <string,list <integer =“”>&gt;用Java列出

时间:2017-09-22 13:33:29

标签: java collections

可以更改Map&lt;字符串,列表&lt;整数&gt;&gt;个人名单?

    List<Integer> list1 = new ArrayList<Integer>();
    list1.add(1);
    list1.add(2);
    list1.add(3);
    list1.add(4);
    List<Integer> list2 = new ArrayList<Integer>();
    list2.add(100);
    list2.add(400);
    list2.add(500);
    list2.add(700);

    Map<String, List<Integer>> map = new HashMap<String, List<Integer>>();
    map.put ("account_number", list1);
    map.put ("Amount", list2);

    System.out.println(map);
    map: {Amount=[100, 400, 500, 700], account_number=[1, 2, 3, 4]}

    List<String> list3 = new ArrayList<String>();
    List<int> list4 = new ArrayList<int>();

现在我想将地图更改为列表(list3,list4)。

   Expected: map -> list3, list 4

   list3               list4
   Amount              100
   Amount              400
   Amount              500
   Amount              700
   account_number      1
   account_number      2
   account_number      3
   account_number      4

我试过,map.keySet(),map.values()把它们放到单独的列表中(list3,list4)但是却无法实现它

我该怎么办?

3 个答案:

答案 0 :(得分:2)

像这样的东西(我是自由写的;可能无法编译):

for (final Entry<String, List<Integer> entry : map.entrySet()) {
    final String key = entry.getKey();
    final List<Integer> value = entry.getValue();
    for (final Integer val : value) {
        list3.add(key);
        list4.add(val);
    }
}

答案 1 :(得分:0)

Map.keySet()返回一组键,您可以使用

创建它
new ArrayList<>(map.keySet())

Map.values()返回值的集合。所以使用

创建它
new ArrayList<>(map.values())

答案 2 :(得分:0)

如果您的意思是将它们放入单独的变量中,那么Java语法将不允许您这样做。

另一方面,如果您想将地图转换为列表列表,可以执行以下操作:

List<List<Integer>> allLists = new ArrayList<>(map.values());

此外,如果您使用的是Java 8,并且想要将列表列表展平为一个简单的列表,您还可以看一下:Turn a List of Lists into a List Using Lambdas