SophiYo

ForceBook

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