【发布时间】:2022-01-23 19:49:24
【问题描述】:
型号:
Year{
int year;
}
ObjectB{
ObjectBA bb; <- ObjectBA{int value}
ObjectBB ba; <- ObjectBB{int value}
}
ObjectC{
List<ObjectBA>
List<ObjectBB>
}
如何转换:
Map<Year, List<ObjectB>>
到
Map<Year, ObjectC>
其中对象 C 具有来自 ObjectB 的所有元素
我已经有了:
var result = inputMap.entrySet().stream()
.collect(Collectors.toMap(
e -> e.getKey(),
e -> e.getValue().stream().
map(
value -> value.bb().getValue()
).toList())
);
我需要在 Object 中给我多个列表的东西,例如:
map(
new ObjectC(
value -> value.ba().getValue(),
value -> value.bb().getValue()
).toList())
【问题讨论】:
-
如果你有 Guava,那么使用
ObjectC的正确构造函数,你可以说Maps.transformValues(inputMap, v -> new ObjectC(v.bb, v.ba));。即使使用流,Guava 也有更清晰的方式来表达一些常见的操作。
标签: java list lambda java-stream