Skip to content

Instantly share code, notes, and snippets.

@GayanM
Created September 25, 2022 11:01
Show Gist options
  • Save GayanM/2b76de46a287a294a7126da840a0c196 to your computer and use it in GitHub Desktop.
Save GayanM/2b76de46a287a294a7126da840a0c196 to your computer and use it in GitHub Desktop.
Produce a data map with order records grouped by customer
@RequestMapping("/group-by-customer")
public Map<Customer, List<Order>> getOrdersByCustomer () {
Map<com.mycompany.functional.programming.exercises.models.Customer,
List<com.mycompany.functional.programming.exercises.models.Order>> ordersByCustomer = orderRepo.
findAll().stream().collect(Collectors.groupingBy(com.mycompany.functional.programming.exercises.models.
Order::getCustomer));
Map<Customer, List<Order>> ordersByCustomerTransformed = new HashMap();
ordersByCustomer.forEach((k,v) -> {
Customer customer = new Customer(k.getId(), k.getName(), k.getTier());
List<Order> orders = v.stream().map(o -> new Order(o.getId(), o.getOrderDate(), o.getDeliveryDate(), o.getStatus())).
collect(Collectors.toList());
ordersByCustomerTransformed.put(customer, orders);
});
return ordersByCustomerTransformed;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment