Groovy 中的分组

GroupBy in Groovy

我想通过 ProductType 将订阅详细信息与其对应的分组 List<Long> planReferenceIds

键:planSubscription.productSubscription.productType

值:planSubscription.planReferenceId

我似乎不知道该怎么做 'groovy way'

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

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

        return subscriptionDetails

编辑:

这是我的想法,但不是我想的 Groovy 方式

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]}