Advertisement
Guest User

Untitled

a guest
May 1st, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.80 KB | None | 0 0
  1. package L16DictionariesExercises;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.LinkedHashMap;
  7. import java.util.Map;
  8. import java.util.TreeMap;
  9. import java.util.stream.Collectors;
  10.  
  11. public class Ex06UserLogs {
  12.     private static Map<String, User> users;
  13.  
  14.     public static void main(String[] args) throws IOException {
  15.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  16.         users = new TreeMap<>();
  17.  
  18.         String input;
  19.         while (! "end".equals(input = reader.readLine())) {
  20.             String[] tokens = input.split("\\s+");
  21.             String ip = tokens[0].substring(tokens[0].indexOf("=") + 1);
  22.             String user = tokens[2].substring(tokens[2].indexOf("=") + 1);
  23.  
  24.             users.putIfAbsent(user, new User(user));
  25.             users.get(user).addIP(ip);
  26.         }
  27.  
  28.         users.values().forEach(System.out::println);
  29.  
  30.     }
  31. }
  32.  
  33. class User {
  34.     private String name;
  35.     private Map<String, Integer> ips;
  36.  
  37.     User(String name) {
  38.         this.name = name;
  39.         this.ips = new LinkedHashMap<>();
  40.     }
  41.  
  42.     void addIP(String ip) {
  43.         this.ips.putIfAbsent(ip, 0);
  44.         this.ips.put(ip, this.ips.get(ip) + 1);
  45.     }
  46.  
  47.     private String getIPsString() {
  48.         return this.ips.entrySet().stream()
  49.                 .map(s -> String.format("%s => %s", s.getKey(), s.getValue()))
  50.                 .collect(Collectors.joining(", "));
  51.     }
  52.  
  53.     @Override
  54.     public String toString() {
  55.         StringBuilder output = new StringBuilder();
  56.         output.append(String.format("%s:", this.name))
  57.                 .append(System.lineSeparator())
  58.                 .append(this.getIPsString())
  59.                 .append(".");
  60.         return output.toString();
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement