SophiYo

Problem03MobaChallenger

Mar 20th, 2019
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.46 KB | None | 0 0
  1. package O7AssocietiveArrays.MoreExercise;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.Map;
  7. import java.util.TreeMap;
  8.  
  9. public class Problem03MobaChallenger {
  10.     public static void main(String[] args) throws IOException {
  11.         @SuppressWarnings("")
  12.         BufferedReader reader =
  13.             new BufferedReader(
  14.                 new InputStreamReader(
  15.                     System.in
  16.                 )
  17.             );
  18.  
  19.         TreeMap<String, TreeMap<String, Integer>> pPS =
  20.                 new TreeMap<>();
  21.  
  22.         String input;
  23.         while (!"Season end".equalsIgnoreCase(input = reader.readLine().trim())) {
  24.  
  25.             String[] tokens = input.split("\\s+");
  26.             if (tokens.length>1){
  27.             if (tokens.length==3) {
  28.                String playerF = tokens[0];
  29.                String playerS = tokens[2];
  30.  
  31.                 if (pPS.containsKey(playerF) && pPS.containsKey(playerS)) {
  32.                     for (Map.Entry<String, Integer> kv : pPS.get(playerF).entrySet()) {
  33.                         if (pPS.containsKey(playerF) && pPS.containsKey(playerS)) {
  34.  
  35.  
  36.                             for (Map.Entry<String, Integer> ps : pPS.get(playerS).entrySet()) {
  37.                                 if (ps.getKey().contains(kv.getKey())) {
  38.                                     if (ps.getValue() > kv.getValue()) {
  39.                                         pPS.remove(playerF);
  40.                                         break;
  41.                                     } else if (ps.getValue() < kv.getValue()) {
  42.                                         pPS.remove(playerS);
  43.                                         break;
  44.                                     }
  45.                                 }
  46.                             }
  47.                         }
  48.                     }
  49.                 }
  50.  
  51.             } else if (tokens.length == 5){
  52.                 String player= tokens[0];
  53.                 String position = tokens[2];
  54.                 @SuppressWarnings("")
  55.                 int skill = Integer.parseInt(tokens[4]);
  56.  
  57.                 pPS.putIfAbsent(player, new TreeMap<>());
  58.  
  59.                 if (pPS.get(player).containsKey(position)){
  60.                     if (pPS.get(player).get(position) < skill) {
  61.                         pPS.get(player).put(position, skill);
  62.                     }
  63.                 } else {
  64.                     pPS.get(player).put(position, skill);
  65.                 }
  66.             }
  67.  
  68.         }
  69. }
  70.         TreeMap<String, Integer> usersSkill = new TreeMap<>();
  71.  
  72.         for (Map.Entry<String, TreeMap<String, Integer>> entry : pPS.entrySet()) {
  73.             for (Map.Entry<String, Integer> kvp : entry.getValue().entrySet()) {
  74.                 usersSkill.putIfAbsent(entry.getKey(), 0);
  75.  
  76.                 usersSkill.put(entry.getKey(),
  77.                         usersSkill.get(entry.getKey())
  78.                                 + kvp.getValue());
  79.             }
  80.         }
  81.  
  82.         usersSkill
  83.                 .entrySet()
  84.                 .stream()
  85.                 .sorted((e1,e2)-> {
  86.                     int sort = Integer.compare(e2.getValue(),e1.getValue());
  87.  
  88.                     if (sort==0) {
  89.                         sort = e1.getKey().compareTo(e2.getKey());
  90.                     }
  91.                     return sort;
  92.                 })
  93.                 .forEach(x-> {
  94.                     System.out.println(String.format(
  95.                             "%s: %d skill",
  96.                             x.getKey(),
  97.                             x.getValue()
  98.                     ));
  99.  
  100.  
  101.                     pPS
  102.                             .get(x.getKey())
  103.                             .entrySet()
  104.                             .stream()
  105.                             .sorted((f,y)->
  106.                             {
  107.                                 int sort = y.getValue().compareTo(f.getValue());
  108.  
  109.                                 if (sort==0) {
  110.                                     sort = f.getKey().compareTo(y.getKey());
  111.  
  112.                                 }
  113.                                 return  sort;
  114.                             }
  115.                 )
  116.                             .forEach(e->
  117.                                     System.out.println(String.format(
  118.                                             "- %s <::> %d",
  119.                                            e.getKey(),
  120.                                             e.getValue()  )
  121.                     ));
  122.  
  123.                         });
  124.  
  125.  
  126.  
  127.     }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment