Group and sum with streams
Java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
record Order(String customer, int cents) {}
public class Orders {
public static Map<String, Integer> revenueByCustomer(List<Order> orders) {
return orders.stream()
.collect(Collectors.groupingBy(
Order::customer,
Collectors.summingInt(Order::cents)));
}
public static void main(String[] args) {
var orders = List.of(
new Order("alice", 1200),
new Order("bob", 800),
new Order("alice", 300));
System.out.println(revenueByCustomer(orders));
}
}