I have a list
PLANS:
ID, A_CODE, COMPARTMENT
10683 163 213
10683 616 194
10683 163 212
10683 163 211
10683 163 214
and want to produce AGGREGATED_PLANS
ID A_CODE COMPARTMENTS
10683 163 211/212/213/214
10683 616 194
How can I do this using java lambda expression ?
I am thinking something like this, but not sure about the aggregateCompartments part ?
plans.stream()
.collect(groupingBy(Plan::getACode,
aggregateCompartments(Plan::getCompartments)));
Any suggestions ?
this may help you:
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("/")))));
output:
{10683 616=194, 10683 163=213/212/211/214}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With