Advertisement
liwgfr

Untitled

Apr 19th, 2021
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.31 KB | None | 0 0
  1. import java.util.*;
  2. import java.util.stream.*;
  3.  
  4. class Main {
  5.     private String from;
  6.     public String getFrom() { return from; }
  7.     private String to;
  8.     public String getTo() { return to; }
  9.     private String currency;
  10.     public String getCurrency() { return currency; }
  11.     private int amount;
  12.     public int getAmount() { return amount; }
  13.     public Main(String from, String to, String currency, int amount) {
  14.         this.from = from;
  15.         this.to = to;
  16.         this.currency = currency;
  17.         this.amount = amount;
  18.     }
  19.  
  20.     @Override
  21.     public String toString() {
  22.         return "Main{" +
  23.                 "from='" + from + '\'' +
  24.                 ", to='" + to + '\'' +
  25.                 ", currency='" + currency + '\'' +
  26.                 ", amount=" + amount +
  27.                 '}';
  28.     }
  29. }
  30. class L14 {
  31.     public static void main(String[] args) {
  32.         List<Main> txns = new LinkedList<>();
  33.         txns.add(new Main("Alice","Bob",   "USD",  10));
  34.         txns.add(new Main("Bob","Charlie", "USD",   5));
  35.         txns.add(new Main("Dave","Charlie","EUR",   5));
  36.         txns.add(new Main("Eve","Frank",   "RUB", 500));
  37.         System.out.println(txns);
  38.         // 1
  39.         // Посчитать баланс транзакций по людям
  40.         // A: -10, B: 5, C: 10, D: -5, E: -500, F: 500
  41.         // Main{from='Alice', to='Bob', currency='USD', amount=10} -> {"Alice"=-10}, {"Bob"=10}
  42.         TreeMap<String, Integer> balances = new L14().run(txns);
  43.  
  44.         // Вывести
  45.  
  46.         for (Map.Entry<String, Integer> entry : balances.entrySet()) {
  47.             System.out.println(entry.getKey() + ": " + entry.getValue());
  48.         }
  49.  
  50.  
  51.     }
  52.     public TreeMap<String, Integer> run(List<Main> txns) {
  53.         Map<String, Integer> balances = txns.stream()
  54.                 .flatMap(t -> Stream.of(
  55.                         new TreeMap.SimpleEntry<>(t.getFrom(), -t.getAmount()),
  56.                         new TreeMap.SimpleEntry<>(t.getTo(), t.getAmount())))
  57.                 .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a,b) -> a+b));
  58.  
  59.         TreeMap<String, Integer> ar = new TreeMap<>();
  60.         for (Map.Entry<String, Integer> entry: balances.entrySet()) {
  61.             ar.put(entry.getKey(), entry.getValue());
  62.         }
  63.         return ar;
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement