Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. package SetsAndMaps.Exercises;
  2.  
  3. import java.util.*;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. import java.util.stream.Collectors;
  7.  
  8. public class UserLogs {
  9. public static void main(String[] args) {
  10. Scanner scanner = new Scanner(System.in);
  11.  
  12. Map<String, LinkedHashMap<String, Integer>> UserLogs = new LinkedHashMap<>();
  13. String regex = "^IP=(?<ip>[A-Z:0-9.]+) message='(?<message>.*)' user=(?<user>.+)$";
  14. Pattern pattern = Pattern.compile(regex);
  15. String input = scanner.nextLine();
  16. while (!input.matches("end")){
  17. Matcher matcher = pattern.matcher(input);
  18. if (matcher.find()){
  19. String IP = matcher.group("ip");
  20. String message = matcher.group("message");
  21. String user = matcher.group("user");
  22. if (UserLogs.containsKey(user)){
  23. LinkedHashMap<String, Integer> CurrentIPSandMessages = UserLogs.get(user);
  24. if (CurrentIPSandMessages.containsKey(IP)){
  25. CurrentIPSandMessages.put(IP, CurrentIPSandMessages.get(IP) + 1);
  26. } else {
  27. CurrentIPSandMessages.put(IP, 1);
  28. }
  29. UserLogs.put(user, CurrentIPSandMessages);
  30. } else {
  31. LinkedHashMap<String, Integer> NewIPAndMessage = new LinkedHashMap<>();
  32. NewIPAndMessage.put(IP, 1);
  33. UserLogs.put(user, NewIPAndMessage);
  34. }
  35. }
  36. input = scanner.nextLine();
  37. }
  38.  
  39. List<String> output = UserLogs.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).map(Map.Entry::getKey).collect(Collectors.toList());
  40. for (String current : output) {
  41. System.out.println(current + ": ");
  42. List<String> insider = UserLogs.get(current).entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
  43. for (int i = 0; i < insider.size(); i++) {
  44. String endingDot = "";
  45. if (i == insider.size() - 1){
  46. endingDot =".";
  47. } else {
  48. endingDot = ",";
  49. }
  50. System.out.print(insider.get(i) + " => " + UserLogs.get(current).get(insider.get(i)) + endingDot + " ");
  51. }
  52. System.out.println();
  53. }
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement