我有一个像下面这样的相关记录,我将从hibernate层获取这些记录
camps batchs values
camp1 b1 300
camp2 b1 67
camp3 b2 8
camp4 b2 90
camp5 b3 78
camp6 b3 23
camp7 b1 89
我想按照下面的顺序使用集合进行分类,其中键指示哪些批记录属于
必需的输出:
b1 :
camp1 300
camp2 67
camp3 0
camp4 0
camp5 0
camp6 0
camp7 89
b2:
camp1 0
camp2 0
camp3 8
camp4 90
camp5 0
camp6 0
camp7 0
b3:
camp1 0
camp2 0
camp3 0
camp4 0
camp5 78
camp6 23
camp7 0
现在,我有以下代码。我被困在这里以获得所需的输出。
for(Camapign cmp : campList){
batch b = getBatchByCamp(cmp.getId());
int val = getValuesByCamp(cmp.getId());
// need to put logic to get required o/p
}
任何身体都可以帮助我。
答案 0 :(得分:0)
假设您希望Map<Batch, Map<Campaign, Integer>>
列表中Campaign
给出一些函数来计算各种属性:
List<Campaign> campaigns; // given a list of Campaign
Map<Batch, Map<Campaign, Integer>> grouped = campaigns.stream()
.collect(Collectors.toMap(
cmp -> getBatchByCamp(cmp.getId()),
cmp -> new Map<Campaign, Integer>(){{put(cmp, getValuesByCamp(cmp.getId()));}},
(a, b) -> {a.putAll(b); return a;})
);