How to merge multiple lists in Java 8 by enum type?
I have 2 lists:
List<StatusSummary> listA //4 items because we have 4 enum types
List<StatusSummary> listB //4 items because we have 4 enum types
class StatusSummary {
private StatusEnum resourcesStatus; //4 statuses: TypeA, TypeB, TypeC, TypeD
private Integer count;
}
I want to have one list consisting of 4 items for each resourcesStatus: TypeA, TypeB, TypeC, TypeD with the sum of elements in count field like:
List<StatusSummary> listA+B with 4 objects:
(resourcesStatus: TypeA, count: 3), (resourcesStatus: TypeB, count:99), (resourcesStatus: typeC, count:322), (resourcesStatus: TypeD, count:2)
So far I implemented something like this:
listA
.getResourcesStatus()
.forEach(la -> listB.getResourcesStatus().stream()
.filter(lb -> lb.getResourcesStatus() == la.getResourcesStatus())
.forEach(lb -> result.add(new StatusSummary()
.count(la.getCount() + lb.getCount())
.status(la.getStatus()))));