使用特定值java对记录进行分类

时间:2018-01-23 04:41:03

标签: java hibernate loops collections

我有一个像下面这样的相关记录,我将从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
}

任何身体都可以帮助我。

1 个答案:

答案 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;})
   );