gpt4 book ai didi

Java 8 List 到 Map>>

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:08 25 4
gpt4 key购买 nike

我有以下类(class):

public class Foo {
private String areaName;
private String objectName;
private String lineName;
}

现在我想转换一个 List<Foo>Map<String, Map<String, List<String>>> .我找到了 this answer这帮助我开发了以下代码:

Map<String, Map<String, List<String>>> testMap = foos.stream().collect(Collectors.groupingBy(e -> e.getAreaName(),
Collectors.groupingBy(e -> e.getObjectName(), Collectors.collectingAndThen(Collectors.toList(),
e -> e.stream().map(f -> f.getLineName())))));

此代码的唯一问题是它应该转换为 List<String> 的部分.我找不到转换 Foo 的方法至 List在那部分。

导致 Map<String, Map<String, List<Foo>>> 的另一种方法:

Map<Object, Map<Object, List<Foo>>> testMap = ventures.stream().collect(Collectors.groupingBy(e -> e.getAreaName(),
Collectors.groupingBy(e -> e.getObjectName(), Collectors.toList())));

我需要更改什么才能收到 Map<String, Map<String, List<String>>>来自 List<Foo> ?

最佳答案

为了获得与 Stream 元素类型不同的 List,您应该链接一个 Collectors.mapping 收集器到 groupingBy:

Map<String, Map<String, List<String>>> testMap = 
foos.stream()
.collect(Collectors.groupingBy(Foo::getAreaName,
Collectors.groupingBy(Foo::getObjectName,
Collectors.mapping(Foo::getLineName,
Collectors.toList()))));

关于Java 8 List<Foo> 到 Map<String, Map<String, List<String>>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53101128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com