Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.Scanner;
- import java.util.TreeMap;
- 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>> usersWithIPsAndMessages = new TreeMap<>();
- String regex = "^IP=(?<IP>[0-9.A-Z:]+) message='(?<message>.*)' user=(?<user>.+){3,50}$";
- String input = scanner.nextLine();
- while (!"end".equals(input)) {
- Pattern pattern = Pattern.compile(regex);
- Matcher matcher = pattern.matcher(input);
- if (matcher.find()) {
- String IP = matcher.group("IP");
- int index = input.lastIndexOf("=");
- String user = input.substring(index + 1);
- if (!usersWithIPsAndMessages.containsKey(user)) {
- usersWithIPsAndMessages.put(user, new LinkedHashMap<>());
- usersWithIPsAndMessages.get(user).put(IP, 1);
- } else {
- if (!usersWithIPsAndMessages.get(user).containsKey(IP)) {
- usersWithIPsAndMessages.get(user).put(IP, 1);
- } else {
- usersWithIPsAndMessages.get(user).put(IP, usersWithIPsAndMessages.get(user).get(IP) + 1);
- }
- }
- }
- input = scanner.nextLine();
- }
- if (!usersWithIPsAndMessages.isEmpty()) {
- usersWithIPsAndMessages.forEach((key, value) -> {
- System.out.printf("%s:%n", key);
- String result = convertWithStream(value) + ".";
- System.out.println(result);
- });
- }
- }
- public static String convertWithStream(Map<String, Integer> map) {
- return map.keySet().stream()
- .map(key -> key + " => " + map.get(key))
- .collect(Collectors.joining(", "));
- }
- }
Add Comment
Please, Sign In to add comment