Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.util.stream.*;
- class Main {
- private String from;
- public String getFrom() { return from; }
- private String to;
- public String getTo() { return to; }
- private String currency;
- public String getCurrency() { return currency; }
- private int amount;
- public int getAmount() { return amount; }
- public Main(String from, String to, String currency, int amount) {
- this.from = from;
- this.to = to;
- this.currency = currency;
- this.amount = amount;
- }
- @Override
- public String toString() {
- return "Main{" +
- "from='" + from + '\'' +
- ", to='" + to + '\'' +
- ", currency='" + currency + '\'' +
- ", amount=" + amount +
- '}';
- }
- }
- class L14 {
- public static void main(String[] args) {
- List<Main> txns = new LinkedList<>();
- txns.add(new Main("Alice","Bob", "USD", 10));
- txns.add(new Main("Bob","Charlie", "USD", 5));
- txns.add(new Main("Dave","Charlie","EUR", 5));
- txns.add(new Main("Eve","Frank", "RUB", 500));
- System.out.println(txns);
- // 1
- // Посчитать баланс транзакций по людям
- // A: -10, B: 5, C: 10, D: -5, E: -500, F: 500
- // Main{from='Alice', to='Bob', currency='USD', amount=10} -> {"Alice"=-10}, {"Bob"=10}
- TreeMap<String, Integer> balances = new L14().run(txns);
- // Вывести
- for (Map.Entry<String, Integer> entry : balances.entrySet()) {
- System.out.println(entry.getKey() + ": " + entry.getValue());
- }
- }
- public TreeMap<String, Integer> run(List<Main> txns) {
- Map<String, Integer> balances = txns.stream()
- .flatMap(t -> Stream.of(
- new TreeMap.SimpleEntry<>(t.getFrom(), -t.getAmount()),
- new TreeMap.SimpleEntry<>(t.getTo(), t.getAmount())))
- .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a,b) -> a+b));
- TreeMap<String, Integer> ar = new TreeMap<>();
- for (Map.Entry<String, Integer> entry: balances.entrySet()) {
- ar.put(entry.getKey(), entry.getValue());
- }
- return ar;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement