Advertisement
Tsuki11

ForceBook

Mar 8th, 2020
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.95 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Exercise_9_ForceBook {
  4.     public static void main(String[] args) {
  5.         Scanner scan = new Scanner(System.in);
  6.  
  7.         Map<String, ArrayList<String>> forceBook = new TreeMap<>();
  8.  
  9.         String input = scan.nextLine();
  10.         while (!"Lumpawaroo".equals(input)) {
  11.             String[] tokens;
  12.             String side;
  13.             String person;
  14.             if (input.contains("|")) {
  15.                 tokens = input.split("\\|");
  16.                 side = tokens[0].trim();
  17.                 person = tokens[1].trim();
  18.                 String check = giveSide(side,person,forceBook);
  19.                 if(check == null){
  20.                     add(side, person, forceBook);
  21.                 }
  22.             } else {
  23.                 tokens = input.split("->");
  24.                 person = tokens[0].trim();
  25.                 side = tokens[1].trim();
  26.  
  27.                 String changeSides = giveSide(side, person, forceBook);
  28.                 String sides = "";
  29.  
  30.                 if (changeSides != null) {
  31.  
  32.                     if (changeSides.equals("Darker") && !side.equals(changeSides)) {
  33.                         sides = side;
  34.                         forceBook.get(changeSides).remove(person);
  35.                         add(side, person, forceBook);
  36.                     } else {
  37.                         sides = side;
  38.                         forceBook.get(changeSides).remove(person);
  39.                         add(side, person, forceBook);
  40.                     }
  41.                 } else {
  42.                     sides = side;
  43.                     add(side, person, forceBook);
  44.                 }
  45.                 System.out.printf("%s joins the %s side!%n", person, sides);
  46.             }
  47.  
  48.             input = scan.nextLine();
  49.         }
  50.         forceBook
  51.                 .entrySet()
  52.                 .stream()
  53.                 .filter(p -> p.getValue().size() > 0)
  54.                 .sorted(Map.Entry.<String, ArrayList<String>>comparingByValue(Comparator.comparing(ArrayList::size)).reversed())
  55.                 .forEach(s -> {
  56.                     System.out.printf("Side: %s, Members: %d%n", s.getKey(), s.getValue().size());
  57.                     s.getValue()
  58.                             .stream()
  59.                             .sorted(String::compareTo)
  60.                             .forEach(person -> System.out.printf("! %s%n", person));
  61.                 });
  62.  
  63.     }
  64.  
  65.     private static String giveSide(String side, String person, Map<String, ArrayList<String>> forceBook) {
  66.         for (Map.Entry<String, ArrayList<String>> entry : forceBook.entrySet()) {
  67.             ArrayList<String> currValue = entry.getValue();
  68.             if (currValue.contains(person)) {
  69.                 return entry.getKey();
  70.             }
  71.         }
  72.         return null;
  73.     }
  74.  
  75.     private static void add(String str1, String str2, Map<String, ArrayList<String>> map) {
  76.         map.putIfAbsent(str1, new ArrayList<>());
  77.         map.get(str1).add(str2);
  78.     }
  79.  
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement