Home » Uncategorized » Zusammengehörende Objekte in einer Collection zusammenfassen – Mit Java Stream API

Zusammengehörende Objekte in einer Collection zusammenfassen – Mit Java Stream API

Angenommen wir haben eine Collection von Einkäufen (Joghurt, Bananen, Deodorant, Äpfel, Käse, …) und wir wollen diese zusammenfassen (z.B. Milchprodukte, Früchte, …) dann können wir das wie folgt machen:

Map<String, Purchase> condensedMap = purchases.stream()
    .collect(Collectors.groupingBy(Purchase::getCategory,
        Collectors.collectingAndThen(Collectors.reducing(
         (a,b) -> new Category(a.getCategory().name(), Math.sum(a.price(), b.price())), 
Optional::get))));

List<Category> condensedList = condensedMap.values();

Inspired by Java stream merge or reduce duplicate objects


Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert