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