fork download
  1. import com.google.common.collect.ArrayListMultimap;
  2. import com.google.common.collect.Multimap;
  3. import java.time.LocalDate;
  4. import java.time.format.DateTimeFormatter;
  5. import java.util.Arrays;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. public class Main {
  10.  
  11. static class Transaction {
  12. int amount;
  13. String transactionType;
  14. LocalDate date;
  15.  
  16. Transaction(int amount, String transactionType, String dateString) {
  17. this.amount = amount;
  18. this.transactionType = transactionType;
  19. this.date = LocalDate.parse(dateString, DateTimeFormatter.ISO_LOCAL_DATE);
  20. }
  21.  
  22. public int getAmount() {
  23. return amount;
  24. }
  25.  
  26. public String getTransactionType() {
  27. return transactionType;
  28. }
  29.  
  30. public LocalDate getDate() {
  31. return date;
  32. }
  33. }
  34.  
  35. public static void main(String[] args) {
  36. List<Transaction> transactions = Arrays.asList(
  37. new Transaction(500, "Credit", "2023-05-27"),
  38. new Transaction(1500, "Debit", "2023-04-06"),
  39. new Transaction(1800, "Credit", "2023-08-06"),
  40. new Transaction(250, "Credit", "2023-05-08"),
  41. new Transaction(500, "Debit", "2023-05-05")
  42. );
  43.  
  44. processTransactions(transactions);
  45. }
  46.  
  47. private static void processTransactions(List<Transaction> transactions) {
  48. Multimap<String, Transaction> transactionsByMonth = ArrayListMultimap.create();
  49.  
  50. transactions.stream()
  51. .filter(t -> "Credit".equals(t.getTransactionType()))
  52. .forEach(t -> transactionsByMonth.put(t.getDate().getMonth().toString(), t));
  53.  
  54. for (String month : transactionsByMonth.keySet()) {
  55. double average = transactionsByMonth.get(month).stream()
  56. .mapToInt(Transaction::getAmount)
  57. .average()
  58. .orElse(0);
  59.  
  60. System.out.println("\"" + month + "\", " + (int) average);
  61. }
  62. }
  63. }
  64.  
Success #stdin #stdout 0.2s 59976KB
stdin
Standard input is empty
stdout
"MAY", 375
"AUGUST", 1800