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}
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}