Advertisement
LoraOrliGeo

User Logs

May 30th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.42 KB | None | 0 0
  1. package a031_SetsAndMaps_Advanced_Ex;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.LinkedHashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Scanner;
  8. import java.util.TreeMap;
  9. import java.util.regex.Matcher;
  10. import java.util.regex.Pattern;
  11.  
  12. public class P09_UserLogs {
  13.     public static void main(String[] args) {
  14.         @SuppressWarnings("resource")
  15.  
  16.         Scanner sc = new Scanner(System.in);
  17.  
  18.         Map<String, Map<String, List<String>>> userLogs = new TreeMap<>();
  19.  
  20.         String line = "";
  21.  
  22.         String regex = "IP=(?<ip>[\\w.:]+)\\smessage=(?<mess>.+)\\suser=(?<user>\\w+)";
  23.         Pattern pattern = Pattern.compile(regex);
  24.  
  25.         while (!"end".equals(line = sc.nextLine())) {
  26.             Matcher matcher = pattern.matcher(line);
  27.  
  28.             if (matcher.find()) {
  29.                 String user = matcher.group("user");
  30.                 String ip = matcher.group("ip");
  31.                 String message = matcher.group("mess");
  32.  
  33.                 userLogs.putIfAbsent(user, new LinkedHashMap<>());
  34.                 userLogs.get(user).putIfAbsent(ip, new ArrayList<>());
  35.                 userLogs.get(user).get(ip).add(message);
  36.             }
  37.         }
  38.        
  39.         userLogs.entrySet().stream().forEach(user -> {
  40.             List<String> output = new ArrayList<>();
  41.             System.out.println(user.getKey() + ":");
  42.             user.getValue().entrySet().stream().forEach(ip -> {
  43.                 output.add((String.format("%s => %d", ip.getKey(), ip.getValue().size())));
  44.             });
  45.            
  46.             System.out.println(output.toString().replaceAll("\\]|\\[", "") + ".");
  47.         });
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement