【发布时间】:2020-07-04 09:06:28
【问题描述】:
我有 Foo 类的列表:
public class Foo {
private Key key;
private String value;
}
public class Foo.Key {
private String category;
private String pref;
private String platform;
}
需要将其转换为 Map
public class Lookup {
private String platform;
private String value;
}
目前我有这个代码:
Map<String,Map<String, List<Lookup>> map = Maps.newHashMap();
fooList.forEach(
f -> {
String category = f.getKey().getCategory();
String pref = f.getKey().getPref();
String platform = f.getKey().getPlatform();
String value = f.getValue();
Lookup data =
Lookup.builder()
.platform(platform)
.value(value)
.build();
if (map.get(category) == null) {
map.put(category, new HashMap<>());
}
map.get(category).computeIfAbsent(pref, (x -> new ArrayList<>())).add(data);
});
我尝试使用 Java 流但无法编译:
fooList.stream()
.collect(Collectors.groupingBy(f -> f.getKey().getCategory(),
Collectors.groupingBy(f -> f.getKey().getPref(),
Collectors.toList(f -> Lookup.Builder.platform(platform).value(value).build()))));
【问题讨论】:
标签: java java-stream