Advertisement
nkostadinski

UserMessages

Apr 3rd, 2021
665
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.16 KB | None | 0 0
  1. package FinalExam;
  2.  
  3. import java.util.*;
  4.  
  5. public class Problem_03 {
  6.     public static void main(String[] args) {
  7.         Scanner scan = new Scanner(System.in);
  8.  
  9.         int capacity = Integer.parseInt(scan.nextLine());
  10.         Map<String, List<Integer>> users = new LinkedHashMap<>();
  11.  
  12.         int sent = 0;
  13.         int received = 1;
  14.  
  15.         String input = scan.nextLine();
  16.         while (!input.equals("Statistics")) {
  17.             String[] tokens = input.split("=");
  18.             String command = tokens[0];
  19.             switch (command) {
  20.                 case "Add":
  21.                     addUsers(users, sent, received, tokens);
  22.                     break;
  23.                 case "Message":
  24.                     message(users, tokens, sent, received, capacity);
  25.                     break;
  26.                 case "Empty":
  27.                     empty(users, tokens);
  28.                     break;
  29.             }
  30.  
  31.  
  32.             input = scan.nextLine();
  33.         }
  34.         System.out.println("Users count: " + users.size());
  35.         users.entrySet().stream().sorted((left, right) -> {
  36.             int result = right.getValue().get(received).compareTo(left.getValue().get(received));
  37.             if (result == 0) {
  38.                 result = left.getKey().compareTo(right.getKey());
  39.             }
  40.             return result;
  41.         }).forEach(entry -> System.out.printf("%s - %d%n", entry.getKey(), entry.getValue().get(sent) + entry.getValue().get(received)));
  42.     }
  43.  
  44.     private static void empty(Map<String, List<Integer>> users, String[] tokens) {
  45.         String userName = tokens[1];
  46.         if (userName.equals("All")) {
  47.  
  48.             users.clear();
  49.  
  50.         } else if (users.containsKey(userName)) {
  51.             users.remove(userName);
  52.         }
  53.     }
  54.  
  55.     private static void message(Map<String, List<Integer>> users, String[] tokens, int sent, int received, int capacity) {
  56.         String sender = tokens[1];
  57.         String receiver = tokens[2];
  58.         if (users.containsKey(sender) && users.containsKey(receiver)) {
  59.             int incrementSent = users.get(sender).get(sent) + 1;
  60.             users.get(sender).set(sent, incrementSent);
  61.             if (incrementSent + users.get(sender).get(received) >= capacity) {
  62.                 users.remove(sender);
  63.                 System.out.println(sender + " reached the capacity!");
  64.             }
  65.             int incrementReceived = users.get(receiver).get(received) + 1;
  66.             users.get(receiver).set(received, incrementReceived);
  67.             if (incrementReceived + users.get(receiver).get(sent) >= capacity) {
  68.                 users.remove(receiver);
  69.                 System.out.println(receiver + " reached the capacity!");
  70.             }
  71.         }
  72.  
  73.     }
  74.  
  75.     private static void addUsers(Map<String, List<Integer>> users, int sent, int received, String[] tokens) {
  76.         String user = tokens[1];
  77.         int sentMsg = Integer.parseInt(tokens[2]);
  78.         int receivedMsg = Integer.parseInt(tokens[3]);
  79.         if (!users.containsKey(user)) {
  80.             users.put(user, new ArrayList<>());
  81.             users.get(user).add(sent, sentMsg);
  82.             users.get(user).add(received, receivedMsg);
  83.         }
  84.     }
  85. }
  86.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement