Guest User

MessagesManager

a guest
Mar 30th, 2020
153
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.company;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Map;
  5. import java.util.Scanner;
  6. import java.util.TreeMap;
  7.  
  8. public class MessagesManager {
  9.     public static void main(String[] args) {
  10.         Scanner scan = new Scanner(System.in);
  11.  
  12.         int capacity = Integer.parseInt(scan.nextLine());
  13.  
  14.         Map<String, ArrayList<Integer>> users = new TreeMap<>();
  15.  
  16.         String input = scan.nextLine();
  17.         while (!input.equals("Statistics")) {
  18.             String[] tokens = input.split("=");
  19.             String cmd = tokens[0];
  20.  
  21.             switch (cmd) {
  22.                 case "Add":
  23.                     String username = tokens[1];
  24.                     int sendMessages = Integer.parseInt(tokens[2]);
  25.                     int receivedMessages = Integer.parseInt(tokens[3]);
  26.                     users.putIfAbsent(username, new ArrayList<>());
  27.                     users.get(username).add(0, sendMessages); // index 0 - sendMessages
  28.                     users.get(username).add(1, receivedMessages); // index 1 - receivedMessages
  29.                     break;
  30.                 case "Message":
  31.                     String sender = tokens[1];
  32.                     String receiver = tokens[2];
  33.                     if (users.containsKey(sender) && users.containsKey(receiver)) {
  34.                         int oldSendMessages = users.get(sender).get(0);
  35.                         users.get(sender).set(0, oldSendMessages + 1);
  36.                         int oldReceivedMessages = users.get(receiver).get(1);
  37.                         users.get(receiver).set(1, oldReceivedMessages + 1);
  38.                         if (users.get(sender).get(0) + users.get(sender).get(1) >= capacity) {
  39.                             users.remove(sender);
  40.                             System.out.println(String.format("%s reached the capacity!", sender));
  41.                         }
  42.  
  43.                         if (users.get(receiver).get(1) + users.get(receiver).get(0) >= capacity) {
  44.                             users.remove(receiver);
  45.                             System.out.println(String.format("%s reached the capacity!", receiver));
  46.                         }
  47.  
  48.  
  49.                     }
  50.                     break;
  51.                 case "Empty":
  52.                     if (users.containsKey(tokens[1])) {
  53.                         users.remove(tokens[1]);
  54.                     }
  55.                     if (tokens[1].equals("All")) {
  56.                         users.clear();
  57.                     }
  58.                     break;
  59.             }
  60.  
  61.  
  62.             input = scan.nextLine();
  63.         }
  64.         System.out.println(String.format("Users count: %d", users.size()));
  65.         users
  66.                 .entrySet()
  67.                 .stream()
  68.                 .sorted((e1, e2) -> e2.getValue().get(1) - e1.getValue().get(1))
  69.                 .forEach(e -> System.out.println(String.format("%s - %d", e.getKey(), e.getValue().get(0) + e.getValue().get(1))));
  70.     }
  71. }
RAW Paste Data