Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Groovy中的GroupBy_Java_Grails_Groovy - Fatal编程技术网

Java Groovy中的GroupBy

Java Groovy中的GroupBy,java,grails,groovy,Java,Grails,Groovy,我想按订阅的产品类型及其相应的 列出PlanReferenceId 关键字:planSubscription.productSubscription.productType 值:planSubscription.planReferenceId 我似乎不知道如何用“非常棒的方式”做到这一点 private static Map<ProductType, List<Long>> buildPlanSubscriptionDetails(List<PlanSubscrip

我想按订阅的产品类型及其相应的 列出PlanReferenceId

关键字:planSubscription.productSubscription.productType

值:planSubscription.planReferenceId

我似乎不知道如何用“非常棒的方式”做到这一点

private static Map<ProductType, List<Long>> buildPlanSubscriptionDetails(List<PlanSubscription> planSubscriptions) {
        Map<ProductType, List<Long>> subscriptionDetails = [:]

        subscriptionDetails = planSubscriptions.groupBy({it.productSubscription.productType })

        return subscriptionDetails

编辑:

这是我想到的,但我想这不是一种很好的方式

planSubscriptions.each { PlanSubscription planSubscription ->
            List<Long> planRefIds = subscriptionDetails.get(planSubscription.productSubscription.productType)

            if (planRefIds) {
                planRefIds.add(planSubscription.planReferenceId)
            } else {
                subscriptionDetails.put(planSubscription.productSubscription.productType, [planSubscription.planReferenceId] as List)
            }
        }
提前谢谢你

分组后应使用collectEntries:

Map<ProductType, List<Long>> result = subscriptionDetails
        .groupBy { it.productSubscription.productType }
        .collectEntries { pt, sd ->  [pt, sd*.planReferenceId]}
分组后应使用collectEntries:

Map<ProductType, List<Long>> result = subscriptionDetails
        .groupBy { it.productSubscription.productType }
        .collectEntries { pt, sd ->  [pt, sd*.planReferenceId]}

非常感谢你的帮助!还不太熟悉Groovy。再次感谢非常感谢你的帮助!还不太熟悉Groovy。再次感谢