Guest User

MessagesManager2

a guest
Mar 30th, 2020
233
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.                     if (!users.containsKey(username)) {
  27.                         users.put(username, new ArrayList<>());
  28.                         users.get(username).add(sendMessages); // index 0 - sendMessages
  29.                         users.get(username).add(receivedMessages); // index 1 - receivedMessages
  30.                     }
  31.                     break;
  32.                 case "Message":
  33.                     String sender = tokens[1];
  34.                     String receiver = tokens[2];
  35.                     if (users.containsKey(sender) && users.containsKey(receiver)) {
  36.                         int oldSendMessages = users.get(sender).get(0);
  37.                         users.get(sender).set(0, oldSendMessages + 1);
  38.                         int oldReceivedMessages = users.get(receiver).get(1);
  39.                         users.get(receiver).set(1, oldReceivedMessages + 1);
  40.                         if (users.get(sender).get(0) + users.get(sender).get(1) >= capacity) {
  41.                             users.remove(sender);
  42.                             System.out.println(String.format("%s reached the capacity!", sender));
  43.                         }
  44.  
  45.                         if (users.get(receiver).get(1) + users.get(receiver).get(0) >= capacity) {
  46.                             users.remove(receiver);
  47.                             System.out.println(String.format("%s reached the capacity!", receiver));
  48.                         }
  49.  
  50.  
  51.                     }
  52.                     break;
  53.                 case "Empty":
  54.                     if (users.containsKey(tokens[1])) {
  55.                         users.remove(tokens[1]);
  56.                     }
  57.                     if (tokens[1].equals("All")) {
  58.                         users.clear();
  59.                     }
  60.                     break;
  61.             }
  62.  
  63.  
  64.             input = scan.nextLine();
  65.         }
  66.         System.out.println(String.format("Users count: %d", users.size()));
  67.         users
  68.                 .entrySet()
  69.                 .stream()
  70.                 .sorted((e1, e2) -> e2.getValue().get(1) - e1.getValue().get(1))
  71.                 .forEach(e -> System.out.println(String.format("%s - %d", e.getKey(), e.getValue().get(0) + e.getValue().get(1))));
  72.     }
  73. }
RAW Paste Data