Advertisement
StefanShivarov

Messages Manager

Nov 30th, 2019
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.26 KB | None | 0 0
  1. import java.util.LinkedHashMap;
  2. import java.util.Map;
  3. import java.util.Scanner;
  4. public class messages_manager {
  5.  
  6.     public static void main(String[] args) {
  7.  
  8.         Scanner scanner = new Scanner(System.in);
  9.  
  10.         int capacity = Integer.parseInt(scanner.nextLine());
  11.  
  12.         Map<String, Integer> sentMessages = new LinkedHashMap<>();
  13.         Map<String, Integer> receivedMessages = new LinkedHashMap<>();
  14.  
  15.         String input = scanner.nextLine();
  16.  
  17.         while(!input.equals("Statistics")){
  18.  
  19.             String[] inputArray = input.split("=");
  20.  
  21.             switch (inputArray[0]){
  22.  
  23.                 case"Add":
  24.  
  25.                     String username = inputArray[1];
  26.                     int sent = Integer.parseInt(inputArray[2]);
  27.                     int received = Integer.parseInt(inputArray[3]);
  28.  
  29.                     sentMessages.putIfAbsent(username, sent);
  30.                     receivedMessages.putIfAbsent(username, received);
  31.  
  32.                     break;
  33.  
  34.  
  35.                 case"Message":
  36.  
  37.                     String sender = inputArray[1];
  38.                     String receiver = inputArray[2];
  39.  
  40.                     if(sentMessages.containsKey(sender)&&sentMessages.containsKey(receiver)){
  41.  
  42.                         sentMessages.replace(sender, sentMessages.get(sender)+1);
  43.                         receivedMessages.replace(receiver, receivedMessages.get(receiver)+1);
  44.                     }
  45.  
  46.                     if(sentMessages.get(sender)>=capacity||sentMessages.get(sender)+receivedMessages.get(sender)>=capacity){
  47.  
  48.                         sentMessages.remove(sender);
  49.                         receivedMessages.remove(sender);
  50.                         System.out.println(sender+" reached the capacity!");
  51.                     }
  52.  
  53.                     if(receivedMessages.get(receiver)>=capacity||sentMessages.get(receiver)+receivedMessages.get(receiver)>=capacity){
  54.  
  55.                         receivedMessages.remove(receiver);
  56.                         sentMessages.remove(receiver);
  57.                         System.out.println(receiver+" reached the capacity!");
  58.  
  59.                     }
  60.  
  61.                     break;
  62.  
  63.  
  64.                 case"Empty":
  65.  
  66.                     if(inputArray[1].equals("All")){
  67.  
  68.                         sentMessages.clear();
  69.                         receivedMessages.clear();
  70.                     }else{
  71.  
  72.                         if(sentMessages.containsKey(inputArray[1])){
  73.  
  74.                             sentMessages.remove(inputArray[1]);
  75.                             receivedMessages.remove(inputArray[1]);
  76.  
  77.                         }
  78.                     }
  79.  
  80.                     break;
  81.  
  82.             }
  83.  
  84.             input = scanner.nextLine();
  85.         }
  86.  
  87.         System.out.println("Users count: "+sentMessages.size());
  88.  
  89.         receivedMessages.entrySet().stream().sorted((a,b)->{
  90.  
  91.             int res = b.getValue().compareTo(a.getValue());
  92.             if(res==0){
  93.  
  94.                 res = a.getKey().compareTo(b.getKey());
  95.             }
  96.             return res;
  97.  
  98.         }).forEach(entry -> {
  99.  
  100.             String username = entry.getKey();
  101.             int r = entry.getValue();
  102.             int s = sentMessages.get(username);
  103.  
  104.             System.out.println(String.format("%s - %d", username, r+s));
  105.  
  106.         });
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement