我想按订阅的详细信息进行分组,通过它的 ProductType
与其相应 List<Long> planReferenceIds
键。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
编辑。
这是我想出来的,但它不是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]}