valerielashvili

Registered Users_v2

Jul 21st, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.96 KB | None | 0 0
  1. import java.time.LocalDate;
  2. import java.time.format.DateTimeFormatter;
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5. import java.util.Scanner;
  6. import java.util.stream.Collectors;
  7.  
  8. public class p01_Registered_Users {
  9.     public static void main(String[] args) {
  10.         Scanner scanner = new Scanner(System.in);
  11.         String inputLine = scanner.nextLine();
  12.  
  13.         LinkedHashMap<String, LocalDate> registeredUsers = new LinkedHashMap<>();
  14.  
  15.         while (!"end".equals(inputLine)) {
  16.             String[] tokens = inputLine.split(" -> ");
  17.             String name = tokens[0];
  18.             LocalDate parsedDate = parseDate(tokens[1]);
  19.  
  20.             registeredUsers.put(name, parsedDate);
  21.  
  22.             inputLine = scanner.nextLine();
  23.         }
  24.  
  25.         LinkedHashMap<String, LocalDate> orderedData = new LinkedHashMap<>(registeredUsers.entrySet().stream()
  26.                 .sorted((a, b) -> {
  27.                     int test = a.getValue().compareTo(b.getValue());
  28.                     if (test == 0) {
  29.                         return -1;
  30.                     } else {
  31.                         return a.getValue().compareTo(b.getValue());
  32.                     }
  33.                 })
  34.                 .limit(5)
  35.                 .sorted((a, b) -> a.getValue().compareTo(b.getValue()))
  36.                 .collect(Collectors.toMap(Map.Entry<String, LocalDate>::getKey,
  37.                         Map.Entry<String, LocalDate>::getValue)));
  38.  
  39.         for (Map.Entry<String, LocalDate> orderedDataEntry : orderedData.entrySet()) {
  40.             String name = orderedDataEntry.getKey();
  41.  
  42.             System.out.printf("%s\n", name);
  43.         }
  44.     }
  45.  
  46.     private static LocalDate parseDate(String dateInput) {
  47.         // Creating DateTimeFormatter to parse a date from a string using our custom pattern.
  48.         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyy");
  49.         LocalDate date = LocalDate.parse(dateInput, formatter);
  50.  
  51.         return date;
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment