模型:
Year{
int year;
}
ObjectB{
ObjectBA bb; <- ObjectBA{int value}
ObjectBB ba; <- ObjectBA{int value}
}
ObjectC{
List<ObjectBA>
List<ObjectBB>
}
如何轉換:
Map<Year, List<ObjectB>>
到
Map<Year, ObjectC>
物件 C 具有物件 B 中的所有元素的位置
我已經有了:
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())
uj5u.com熱心網友回復:
你所擁有的看起來已經很不錯了。只需用e -> convert(e.getValue())where替換值映射器,convert就像下面將 a 轉換List<ObjectB>為 an的函式ObjectC:
ObjectC convert(List<ObjectB> list) {
ObjectC c = new ObjectC();
for (ObjectB b : list) {
c.ba.add(b.ba);
c.bb.add(b.bb);
}
return c;
}
或者,如果您更愿意堅持只使用流,請嘗試Stream#collect如下:
e.getValue().stream().collect(
() -> new ObjectC(),
(c, b) -> {
c.ba.add(b.ba);
c.bb.add(b.bb);
},
(c1, c2) -> {
c1.ba.addAll(c2.ba);
c1.bb.addAll(c2.bb);
}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/390142.html
上一篇:類已由更新版本的Java環境(類檔案版本52.0.)編譯”
下一篇:從流分組中獲取唯一日期串列
