Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.Scanner;
- public class messages_manager {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- int capacity = Integer.parseInt(scanner.nextLine());
- Map<String, Integer> sentMessages = new LinkedHashMap<>();
- Map<String, Integer> receivedMessages = new LinkedHashMap<>();
- String input = scanner.nextLine();
- while(!input.equals("Statistics")){
- String[] inputArray = input.split("=");
- switch (inputArray[0]){
- case"Add":
- String username = inputArray[1];
- int sent = Integer.parseInt(inputArray[2]);
- int received = Integer.parseInt(inputArray[3]);
- sentMessages.putIfAbsent(username, sent);
- receivedMessages.putIfAbsent(username, received);
- break;
- case"Message":
- String sender = inputArray[1];
- String receiver = inputArray[2];
- if(sentMessages.containsKey(sender)&&sentMessages.containsKey(receiver)){
- sentMessages.replace(sender, sentMessages.get(sender)+1);
- receivedMessages.replace(receiver, receivedMessages.get(receiver)+1);
- }
- if(sentMessages.get(sender)>=capacity||sentMessages.get(sender)+receivedMessages.get(sender)>=capacity){
- sentMessages.remove(sender);
- receivedMessages.remove(sender);
- System.out.println(sender+" reached the capacity!");
- }
- if(receivedMessages.get(receiver)>=capacity||sentMessages.get(receiver)+receivedMessages.get(receiver)>=capacity){
- receivedMessages.remove(receiver);
- sentMessages.remove(receiver);
- System.out.println(receiver+" reached the capacity!");
- }
- break;
- case"Empty":
- if(inputArray[1].equals("All")){
- sentMessages.clear();
- receivedMessages.clear();
- }else{
- if(sentMessages.containsKey(inputArray[1])){
- sentMessages.remove(inputArray[1]);
- receivedMessages.remove(inputArray[1]);
- }
- }
- break;
- }
- input = scanner.nextLine();
- }
- System.out.println("Users count: "+sentMessages.size());
- receivedMessages.entrySet().stream().sorted((a,b)->{
- int res = b.getValue().compareTo(a.getValue());
- if(res==0){
- res = a.getKey().compareTo(b.getKey());
- }
- return res;
- }).forEach(entry -> {
- String username = entry.getKey();
- int r = entry.getValue();
- int s = sentMessages.get(username);
- System.out.println(String.format("%s - %d", username, r+s));
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement