【问题标题】:Categorize records with specific values java使用特定值java对记录进行分类
【发布时间】:2018-01-23 04:41:03
【问题描述】:

我有如下相关记录,我将从休眠层获取这些记录

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
}

任何机构都可以帮助我吗?

【问题讨论】:

  • Campaign 是否有 getBatchs() 方法?
  • @Bohemian 每个广告系列都有广告系列 ID,通过广告系列 ID 调用服务,我可以获得批次属性。

标签: java hibernate loops collections


【解决方案1】:

假设你想从Campaign 列表中得到一个Map<Batch, Map<Campaign, Integer>> 给定一些函数来计算各种属性:

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

【讨论】:

  • 谢谢,我用的是java7,能不能把java7的代码放上来。
  • @Daisy。 Java 8 已经推出 3 年多了,我们现在已经达到了 Java 9。我不会发布已弃用的 java 版本的代码。请升级。
  • 我同意,但是我们的应用程序是基于 java7 的,sp 你能不能至少放个伪代码。所以我能理解吗?请
  • @daisy 首先创建Map&lt;Batch, Map&lt;Campaign, Integer&gt;&gt; 类型的地图,然后在循环中将内容放入其中
  • 你能把相关的代码放上去吗?用逻辑填充地图以给出所需的结果是我不知道的。这会有所帮助
猜你喜欢
  • 2012-06-11
  • 2022-01-17
  • 1970-01-01
  • 2010-10-05
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多