Stream GroupBy Object Property



// Assume you have a Item pojo class
public static void main(String[] args) {
        List<Item> items = Arrays.asList(
                new Item("apple", 17),
                new Item("banana", 19),
                new Item("orang", 11),
                new Item("watermelon", 7),
                new Item("papaya", 7),
                new Item("apple", 19),
                new Item("banana", 11),
                new Item("apple", 17)
                );
       
        Map<String, Long> counts = items.stream().collect(
                            Collectors.groupingBy(
                                    Item::getName,
                                    Collectors.counting()
                            ));

       
        System.out.println(counts);
       
        Map<String, Integer> quantity = items.stream().collect(
                            Collectors.groupingBy(                                Item::getName,Collectors.summingInt(Item::getQuantity)
                            ));

       
        System.out.println(quantity);
    }

Output
{papaya=1, banana=2, apple=3, orang=1, watermelon=1}
{papaya=7, banana=30, apple=53, orang=11, watermelon=7}