【发布时间】:2021-08-30 17:45:06
【问题描述】:
有人可以帮我编写将相同大小的列表地图合并到地图列表中的代码吗?
例如:输入
Map<String, List<Object>> map = new HashMap<>();
map.put("userid", Arrays.asList(1, 2, 3));
map.put("username", Arrays.asList("a","b","c"));
map.put("country", Arrays.asList("UK","IN","US"));
{country=[UK, IN, US], userid=[1, 2, 3], username=[a, b, c]}
.. 并且可以列出任意数量的地图。
所需的 JSON 输出:
[
{"userid":1, "username":"a", "country":"UK"},
{"userid":2, "username":"b", "country":"IN"},
{"userid":3, "username":"c", "country":"US"}
]
我检查了这个post,但它包含所有组合。我正在寻找类似于 1:1 映射的东西。
尝试使用以下方法。可能不是正确的方法,如果有人可以提供更好的解决方案,我们将不胜感激。
ArrayList<Object> myList = new ArrayList<>();
int mapSize = map.get("userid").size();
for (int i=0; i< mapSize; i++) {
Map<String,Object> eachMap = new HashMap<>();
for (String key : map.keySet())
//System.out.println(key + "," + map.get(key).get(i));
eachMap.put(key,map.get(key).get(i));
myList.add(eachMap);
}
JSONArray jsonArray = new JSONArray();
jsonArray.addAll(myList);
System.out.println(jsonArray);
输出
[{"country":"UK","userid":1,"username":"a"},{"country":"IN","userid":2,"username":"b" },{"country":"US","userid":3,"username":"c"}]
【问题讨论】:
-
你可以让它变得非常简单:拥有一个具有你需要的属性的模型类。然后让 one 循环遍历索引,在其中创建一个新模型,从相应的列表 [索引] 填充属性,然后添加到结果列表。完成。
-
我对 Java 还是很陌生。我们如何从相应的 list[index] 定义和填充属性?
-
Java 还是 JavaScript?这是两个完全不同的东西。您在问题中用于地图的符号是 JavaScript,而不是 Java。
-
对不起。我不知道确切的符号。我刚刚用正确的符号再次修改了我的问题。
标签: java