Advertisement
Guest User

Untitled

a guest
Jul 31st, 2023
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.56 KB | None | 0 0
  1. package SetsAndMapsExer;
  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 E08_UserLogs {
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.  
  12.         TreeMap<String, LinkedHashMap<String, Integer>> users = fillUsersMap(scanner);
  13.         printUsersMap(users);
  14.  
  15.  
  16.     }
  17.  
  18.     private static TreeMap<String, LinkedHashMap<String, Integer>> fillUsersMap(Scanner scanner) {
  19.         TreeMap<String, LinkedHashMap<String, Integer>> users = new TreeMap<>();
  20.  
  21.         String input = scanner.nextLine();
  22.         while (!input.equals("end")) {
  23.             String internetProtocol = input.split(" ")[0].split("=")[1];
  24.             String username = input.split(" ")[2].split("=")[1];
  25.  
  26.             if (!users.containsKey(username)) {
  27.                 users.put(username, new LinkedHashMap<>());
  28.                 users.get(username).put(internetProtocol, 1);
  29.             } else {
  30.                 if (!users.get(username).containsKey(internetProtocol)) {
  31.                     users.get(username).put(internetProtocol, 1);
  32.                 } else {
  33.                     int count = users.get(username).get(internetProtocol);
  34.                     users.get(username).put(internetProtocol, count + 1);
  35.                 }
  36.             }
  37.             input = scanner.nextLine();
  38.         }
  39.  
  40.         return users;
  41.     }
  42.  
  43.     private static void printUsersMap(TreeMap<String, LinkedHashMap<String, Integer>> users) {
  44.  
  45.         users.entrySet().stream()
  46.                 .forEach(entry -> {
  47.                     System.out.println(entry.getKey() + ": ");
  48.                     LinkedHashMap<String, Integer> ipsMap = entry.getValue();
  49.                     int ipCount = ipsMap.size();
  50.                     int currentIpIndex = 0;
  51.                     for (Map.Entry<String, Integer> ipEntry : ipsMap.entrySet()) {
  52.                         System.out.print(ipEntry.getKey() + " => " + ipEntry.getValue());
  53.                         if (currentIpIndex < ipCount - 1) {
  54.                             System.out.print(", ");
  55.                         } else {
  56.                             System.out.print(".");
  57.                         }
  58.                         currentIpIndex++;
  59.                     }
  60.                     System.out.println();
  61.                 });
  62.     }
  63. }
  64.  
  65.  
  66. /*IP=192.23.30.40 message='Hello&derps.' user=destroyer
  67. IP=192.23.30.41 message='Hello&yall.' user=destroyer
  68. IP=192.23.30.40 message='Hello&hi.' user=destroyer
  69. IP=192.23.30.42 message='Hello&Dudes.' user=destroyer
  70. end*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement