Java lambda 聚合器

标签 java lambda

我有一个 list

计划:

ID,    A_CODE, COMPARTMENT
10683   163     213 
10683   616     194
10683   163     212
10683   163     211
10683   163     214

想要生产 AGGREGATED_PLANS

ID      A_CODE  COMPARTMENTS
10683   163     211/212/213/214
10683   616     194

如何使用 java lambda 表达式执行此操作?

我在想这样的事情,但不确定 aggregateCompartments 部分?

plans.stream()
     .collect(groupingBy(Plan::getACode, 
           aggregateCompartments(Plan::getCompartments)));

有什么建议吗?

最佳答案

这可能对你有帮助:

    List<Plan> plans = new ArrayList<>();
    plans.add(new Plan("10683", "163", "213"));
    plans.add(new Plan("10683", "616", "194"));
    plans.add(new Plan("10683", "163", "212"));
    plans.add(new Plan("10683", "163", "211"));
    plans.add(new Plan("10683", "163", "214"));

    System.out.println(
        plans.stream().collect(
               Collectors.groupingBy(p -> p.id + " " + p.aCode, 
               Collectors.mapping(Plan::getCompartment, Collectors.joining("/")))));

输出:

{10683 616=194, 10683 163=213/212/211/214}

关于Java lambda 聚合器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48800554/

相关文章:

java - 如果我们有压倒性的概念,为什么还要抽象呢?

java - 在Kotlin/Java中将列表过滤到特定大小

python - Lambda 表达式 : Returning Multiple Values

c# - 将 Func<T1,T2> 初始化为扩展方法

java - 是否在 lambda 表达式中实例化了一个类?

java - 正则表达式在 Android 中不起作用

java - 绕运动体的轴旋转

java - 数据绑定(bind)找不到方法

linq - 将 lambda 表达式转换为表达式树

java - 从 SynchronizedMultimap 中删除元素会增加意外行为