小编Xua*_*uan的帖子

Java 8嵌套分组

我有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)

java java-8 java-stream

3
推荐指数
1
解决办法
1326
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1