svephoto

Messages Manager [Java]

Nov 25th, 2021
628
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.*;
  2.  
  3. public class MessagesManager {
  4.     public static void main(String[] args) {
  5.         Scanner scanner = new Scanner(System.in);
  6.  
  7.         int capacity = Integer.parseInt(scanner.nextLine());
  8.  
  9.         HashMap<String, Integer> userSentMessages = new HashMap<>();
  10.         HashMap<String, Integer> userReceivedMessages = new HashMap<>();
  11.  
  12.         String input = scanner.nextLine();
  13.  
  14.         while (!input.equals("Statistics")) {
  15.             String[] tokens = input.split("=");
  16.  
  17.             switch (tokens[0]) {
  18.                 case "Add":
  19.                     String username = tokens[1];
  20.                     int sent = Integer.parseInt(tokens[2]);
  21.                     int received = Integer.parseInt(tokens[3]);
  22.  
  23.                     if (!userSentMessages.containsKey(username)) {
  24.                         userSentMessages.put(username, sent);
  25.                         userReceivedMessages.put(username, received);
  26.                     }
  27.                     break;
  28.                 case "Message":
  29.                     String sender = tokens[1];
  30.                     String receiver = tokens[2];
  31.  
  32.                     if (userSentMessages.containsKey(sender) && userReceivedMessages.containsKey(receiver)) {
  33.                         userSentMessages.put(sender, userSentMessages.get(sender) + 1);
  34.                         userReceivedMessages.put(receiver, userReceivedMessages.get(receiver) + 1);
  35.  
  36.                         if (userSentMessages.get(sender) + userReceivedMessages.get(sender) >= capacity) {
  37.                             System.out.println(String.format("%s reached the capacity!", sender));
  38.                             userSentMessages.remove(sender);
  39.                             userReceivedMessages.remove(sender);
  40.                         }
  41.  
  42.                         if (userSentMessages.get(receiver) + userReceivedMessages.get(receiver) >= capacity) {
  43.                             System.out.println(String.format("%s reached the capacity!", receiver));
  44.                             userSentMessages.remove(receiver);
  45.                             userReceivedMessages.remove(receiver);
  46.                         }
  47.                     }
  48.                     break;
  49.                 case "Empty":
  50.                     String usernameEmpty = tokens[1];
  51.  
  52.                     if ("All".equals(usernameEmpty)) {
  53.                         userSentMessages.clear();
  54.                         userReceivedMessages.clear();
  55.                     } else {
  56.                         userSentMessages.remove(usernameEmpty);
  57.                         userReceivedMessages.remove(usernameEmpty);
  58.                     }
  59.                     break;
  60.             }
  61.  
  62.             input = scanner.nextLine();
  63.         }
  64.  
  65.         System.out.printf("Users count: %d%n", (userSentMessages.size() + userReceivedMessages.size()) / 2);
  66.  
  67.         userReceivedMessages.entrySet().stream().sorted(Map.Entry.<String, Integer>comparingByValue()
  68.                 .reversed().thenComparing(Map.Entry::getKey))
  69.                 .forEach(e -> {
  70.                     int sentAndReceivedMessages = userSentMessages.get(e.getKey())
  71.                             + userReceivedMessages.get(e.getKey());
  72.                     System.out.printf("%s - %d%n", e.getKey(), sentAndReceivedMessages);
  73.                 });
  74.     }
  75. }
  76.  
RAW Paste Data