Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
638
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.81 KB | None | 0 0
  1. import java.util.LinkedHashMap;
  2. import java.util.Map;
  3. import java.util.Scanner;
  4.  
  5. public class kur {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.  
  9.         Map<String, LinkedHashMap<String, Integer>> dwarfs = new LinkedHashMap<>();
  10.         String input;
  11.  
  12.         while (!"Once upon a time".equals(input = scanner.nextLine())) {
  13.  
  14.             String[] lineInput = input.split(" <:> ");
  15.  
  16.             String name = lineInput[0];
  17.             String hatColor = lineInput[1];
  18.             int physics = Integer.parseInt(lineInput[2]);
  19.  
  20.             dwarfs.putIfAbsent(hatColor, new LinkedHashMap<>());
  21.             dwarfs.get(hatColor).putIfAbsent(name, physics);
  22.  
  23.             if (dwarfs.get(hatColor).get(name) < physics) {
  24.                 dwarfs.get(hatColor).put(name, physics);
  25.             }
  26.         }
  27.  
  28.  
  29.         Map<String, Integer> print = new LinkedHashMap<>();
  30.  
  31.         for(Map.Entry<String, LinkedHashMap<String, Integer>> entry : dwarfs.entrySet()) {
  32.             for(Map.Entry<String, Integer> subEntry : entry.getValue().entrySet()) {
  33.                 print.put(entry.getKey() + " " + subEntry.getKey() + " " + entry.getValue().size(), subEntry.getValue());
  34.             }
  35.         }
  36.         print.entrySet().stream().sorted((pair2, pair1) -> {
  37.             int sort = Integer.compare(pair1.getValue(), pair2.getValue());
  38.             if (sort == 0) {
  39.                 String[] sort1 = pair1.getKey().split(" ");
  40.                 String[] sort2 = pair2.getKey().split(" ");
  41.                 sort = sort1[2].compareTo(sort2[2]);
  42.             }
  43.             return sort;
  44.         }).forEach(pair -> {
  45.             String[] printing = pair.getKey().split(" ");
  46.             System.out.printf("(%s) %s <-> %d\n", printing[0], printing[1], pair.getValue());
  47.         });
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement