Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package SetsAndMaps.Exercises;
- import java.util.*;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import java.util.stream.Collectors;
- public class UserLogs {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- Map<String, LinkedHashMap<String, Integer>> UserLogs = new LinkedHashMap<>();
- String regex = "^IP=(?<ip>[A-Z:0-9.]+) message='(?<message>.*)' user=(?<user>.+)$";
- Pattern pattern = Pattern.compile(regex);
- String input = scanner.nextLine();
- while (!input.matches("end")){
- Matcher matcher = pattern.matcher(input);
- if (matcher.find()){
- String IP = matcher.group("ip");
- String message = matcher.group("message");
- String user = matcher.group("user");
- if (UserLogs.containsKey(user)){
- LinkedHashMap<String, Integer> CurrentIPSandMessages = UserLogs.get(user);
- if (CurrentIPSandMessages.containsKey(IP)){
- CurrentIPSandMessages.put(IP, CurrentIPSandMessages.get(IP) + 1);
- } else {
- CurrentIPSandMessages.put(IP, 1);
- }
- UserLogs.put(user, CurrentIPSandMessages);
- } else {
- LinkedHashMap<String, Integer> NewIPAndMessage = new LinkedHashMap<>();
- NewIPAndMessage.put(IP, 1);
- UserLogs.put(user, NewIPAndMessage);
- }
- }
- input = scanner.nextLine();
- }
- List<String> output = UserLogs.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).map(Map.Entry::getKey).collect(Collectors.toList());
- for (String current : output) {
- System.out.println(current + ": ");
- List<String> insider = UserLogs.get(current).entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
- for (int i = 0; i < insider.size(); i++) {
- String endingDot = "";
- if (i == insider.size() - 1){
- endingDot =".";
- } else {
- endingDot = ",";
- }
- System.out.print(insider.get(i) + " => " + UserLogs.get(current).get(insider.get(i)) + endingDot + " ");
- }
- System.out.println();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement