我有2个问题似乎无法解决.第一个是我需要一种方法来进行动态嵌套分组,其中可以有1-n个嵌套组,用户可以传入.
第二个问题是我需要将结果展平,其中键是concat而不是嵌套.
我的示例输入如下所示:
List<Map<String, String>> fakeData = new LinkedList<>();
Map<String, String> data1 = new HashMap<>();
data1.put("ip","10.0.1.0");
data1.put("uid","root");
data1.put("group","admin");
fakeData.add(data1);
Map<String, String> data2 = new HashMap<>();
data2.put("ip","10.0.1.1");
data2.put("uid","tiger");
data2.put("group","user");
fakeData.add(data2);
Map<String, String> data3 = new HashMap<>();
data3.put("ip","10.0.1.1");
data3.put("uid","woods");
data3.put("group","user");
fakeData.add(data3);
Run Code Online (Sandbox Code Playgroud)
最终结果有一个映射键:
{
"10.0.1.1user": [
{
"uid": "tiger",
"ip": "10.0.1.1",
"group": "user"
},
{
"uid": "woods",
"ip": "10.0.1.1",
"group": "user"
}
],
"10.0.1.0admin": [
"uid": "root",
"ip": "10.0.1.0",
"group": "admin"
]
}
Run Code Online (Sandbox Code Playgroud)
请注意,键是concat而不是映射中的嵌套映射.
我正在尝试创建一个groupingby,它可以是动态的,没有任何运气:
fakeData.stream()
.collect(groupingBy(map -> map.get("ip"),
groupingBy(map -> map.get("uuid"),
... …Run Code Online (Sandbox Code Playgroud)