fork(1) download
  1. import java.math.BigDecimal;
  2. import java.time.LocalDate;
  3. import java.time.Month;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.stream.Collectors;
  8.  
  9.  
  10. class Ideone
  11. {
  12. public static void main (String[] args)
  13. {
  14. List<Invoice> invoiceListForMonth = Arrays.asList(
  15. new Invoice(LocalDate.of(2018, Month.JULY, 01), BigDecimal.valueOf(10_000)),
  16. new Invoice(LocalDate.of(2018, Month.JULY, 28), BigDecimal.valueOf(500)),
  17. new Invoice(LocalDate.of(2018, Month.JULY, 01), BigDecimal.valueOf(700)),
  18. new Invoice(LocalDate.of(2018, Month.JULY, 28), BigDecimal.valueOf(4500)),
  19. new Invoice(LocalDate.of(2018, Month.JULY, 15), BigDecimal.valueOf(8960)),
  20. new Invoice(LocalDate.of(2018, Month.JULY, 15), BigDecimal.valueOf(14450))
  21. );
  22. Map<LocalDate, List<Invoice>> grouping =
  23. invoiceListForMonth.stream()
  24. .collect(Collectors.groupingBy(Invoice::getPurchaseDate));
  25.  
  26. Map<LocalDate, BigDecimal> result = grouping.entrySet().stream()
  27. .collect(Collectors.toMap(Map.Entry::getKey,
  28. e -> e.getValue().stream().map(Invoice::getPrice)
  29. .reduce(BigDecimal.ZERO, BigDecimal::add))
  30. );
  31.  
  32. result.forEach((k, v) -> System.out.println(k + " : " + v));
  33. }
  34. }
  35.  
  36. class Invoice {
  37. private LocalDate purchaseDate;
  38. private BigDecimal price;
  39.  
  40. public Invoice() {
  41. }
  42.  
  43. public Invoice(LocalDate purchaseDate, BigDecimal price) {
  44. this.purchaseDate = purchaseDate;
  45. this.price = price;
  46. }
  47.  
  48. public LocalDate getPurchaseDate() {
  49. return purchaseDate;
  50. }
  51.  
  52. public void setPurchaseDate(LocalDate purchaseDate) {
  53. this.purchaseDate = purchaseDate;
  54. }
  55.  
  56. public BigDecimal getPrice() {
  57. return price;
  58. }
  59.  
  60. public void setPrice(BigDecimal price) {
  61. this.price = price;
  62. }
  63. }
Success #stdin #stdout 0.23s 2184192KB
stdin
Standard input is empty
stdout
2018-07-15 : 23410
2018-07-28 : 5000
2018-07-01 : 10700