可以更改Map<字符串,列表<整数>>个人名单?
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)但是却无法实现它
我该怎么办?
答案 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