Advertisement
Ligh7_of_H3av3n

08. User Logs

May 21st, 2024
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.09 KB | None | 0 0
  1. package Uprajnenie;
  2.  
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5. import java.util.Scanner;
  6. import java.util.TreeMap;
  7.  
  8. public class UserLogs {
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.  
  12.  
  13.         // TreeMap to store users' logs, sorted alphabetically by username
  14.         TreeMap<String, LinkedHashMap<String, Integer>> users = fillUsersMap(scanner);
  15.  
  16.         // Print the users' logs
  17.         printUsersMap(users);
  18.  
  19.         scanner.close();
  20.     }
  21.  
  22.     // Method to fill the users' map with logs
  23.     private static TreeMap<String, LinkedHashMap<String, Integer>> fillUsersMap(Scanner scanner) {
  24.         TreeMap<String, LinkedHashMap<String, Integer>> users = new TreeMap<>();
  25.  
  26.         String input = scanner.nextLine();
  27.         while (!input.equals("end")) {
  28.             // Split input to extract IP address and username
  29.             String internetProtocol = input.split(" ")[0].split("=")[1];
  30.             String username = input.split(" ")[2].split("=")[1];
  31.  
  32.             // Update the users' map with the log entry
  33.             users.putIfAbsent(username, new LinkedHashMap<>());
  34.             users.get(username).put(internetProtocol, users.get(username).getOrDefault(internetProtocol, 0) + 1);
  35.  
  36.             input = scanner.nextLine();
  37.         }
  38.  
  39.         return users;
  40.     }
  41.  
  42.     // Method to print the users' logs
  43.     private static void printUsersMap(TreeMap<String, LinkedHashMap<String, Integer>> users) {
  44.         users.forEach((username, ipsMap) -> {
  45.             System.out.println(username + ": ");
  46.             int ipCount = ipsMap.size();
  47.             int currentIpIndex = 0;
  48.             for (Map.Entry<String, Integer> ipEntry : ipsMap.entrySet()) {
  49.                 System.out.print(ipEntry.getKey() + " => " + ipEntry.getValue());
  50.                 if (currentIpIndex < ipCount - 1) {
  51.                     System.out.print(", ");
  52.                 } else {
  53.                     System.out.print(".");
  54.                 }
  55.                 currentIpIndex++;
  56.             }
  57.             System.out.println();
  58.         });
  59.     }
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement