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