Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package FinalExam;
- import java.util.*;
- public class Problem_03 {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- int capacity = Integer.parseInt(scan.nextLine());
- Map<String, List<Integer>> users = new LinkedHashMap<>();
- int sent = 0;
- int received = 1;
- String input = scan.nextLine();
- while (!input.equals("Statistics")) {
- String[] tokens = input.split("=");
- String command = tokens[0];
- switch (command) {
- case "Add":
- addUsers(users, sent, received, tokens);
- break;
- case "Message":
- message(users, tokens, sent, received, capacity);
- break;
- case "Empty":
- empty(users, tokens);
- break;
- }
- input = scan.nextLine();
- }
- System.out.println("Users count: " + users.size());
- users.entrySet().stream().sorted((left, right) -> {
- int result = right.getValue().get(received).compareTo(left.getValue().get(received));
- if (result == 0) {
- result = left.getKey().compareTo(right.getKey());
- }
- return result;
- }).forEach(entry -> System.out.printf("%s - %d%n", entry.getKey(), entry.getValue().get(sent) + entry.getValue().get(received)));
- }
- private static void empty(Map<String, List<Integer>> users, String[] tokens) {
- String userName = tokens[1];
- if (userName.equals("All")) {
- users.clear();
- } else if (users.containsKey(userName)) {
- users.remove(userName);
- }
- }
- private static void message(Map<String, List<Integer>> users, String[] tokens, int sent, int received, int capacity) {
- String sender = tokens[1];
- String receiver = tokens[2];
- if (users.containsKey(sender) && users.containsKey(receiver)) {
- int incrementSent = users.get(sender).get(sent) + 1;
- users.get(sender).set(sent, incrementSent);
- if (incrementSent + users.get(sender).get(received) >= capacity) {
- users.remove(sender);
- System.out.println(sender + " reached the capacity!");
- }
- int incrementReceived = users.get(receiver).get(received) + 1;
- users.get(receiver).set(received, incrementReceived);
- if (incrementReceived + users.get(receiver).get(sent) >= capacity) {
- users.remove(receiver);
- System.out.println(receiver + " reached the capacity!");
- }
- }
- }
- private static void addUsers(Map<String, List<Integer>> users, int sent, int received, String[] tokens) {
- String user = tokens[1];
- int sentMsg = Integer.parseInt(tokens[2]);
- int receivedMsg = Integer.parseInt(tokens[3]);
- if (!users.containsKey(user)) {
- users.put(user, new ArrayList<>());
- users.get(user).add(sent, sentMsg);
- users.get(user).add(received, receivedMsg);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement