SHARE
TWEET

Untitled

a guest Jul 22nd, 2019 90 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.company;
  2.  
  3.  
  4. import java.util.*;
  5.  
  6. public class ForceBook {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.         HashMap<String, List<String>> users = new HashMap<>();
  10.         String input = scanner.nextLine();
  11.         while (!input.equals("Lumpawaroo")) {
  12.             String[] tokens = null;
  13.             if (input.contains("|")) {
  14.                 tokens = input.split(" \\| ");
  15.                 String forceSide = tokens[0];
  16.                 String forceUser = tokens[1];
  17.                 users.putIfAbsent(forceSide, new ArrayList<>());
  18.                 boolean isPresent = false;
  19.                 for (Map.Entry<String, List<String>> entry : users.entrySet()) {
  20.                     if (entry.getValue().contains(forceUser)) {
  21.                         entry.getValue().remove(forceUser);
  22.                         users.get(forceSide).add(forceUser);
  23.                         isPresent = true;
  24.                         break;
  25.                     }
  26.                 }
  27.                 if (!users.get(forceSide).contains(forceUser) && !isPresent) {
  28.                     users.get(forceSide).add(forceUser);
  29.                 }
  30.                 users.entrySet().stream().sorted((f, s) -> {
  31.                     int result = s.getValue().size() - f.getValue().size();
  32.                     if (result == 0) {
  33.                         result = f.getKey().compareTo(s.getKey());
  34.                     }
  35.                     return result;
  36.                 }).forEach(entry -> {
  37.                     System.out.printf("Side: %s, Members: %d%n", entry.getKey(), entry.getValue().size());
  38.                     entry.getValue().stream().sorted(String::compareTo)
  39.                             .forEach(user -> System.out.println("! " + user));
  40.                 });
  41.             } else {
  42.                 tokens = input.split(" -> ");
  43.                 String forceUser = tokens[0];
  44.                 String forceSide = tokens[1];
  45.                 boolean isPresent = false;
  46.                 for (Map.Entry<String, List<String>> entry : users.entrySet()) {
  47.                     if (entry.getValue().contains(forceUser) && !entry.getKey().equals(forceSide)) {
  48.                         entry.getValue().remove(forceUser);
  49.                         users.putIfAbsent(forceSide, new ArrayList<>());
  50.                         users.get(forceSide).add(forceUser);
  51.                         isPresent = true;
  52.                         break;
  53.                     }
  54.                 }
  55.                 if (!isPresent) {
  56.                     users.putIfAbsent(forceSide, new ArrayList<>());
  57.                     users.get(forceSide).add(forceUser);
  58.                 }
  59.                 System.out.printf("%s joins the %s side!%n", forceUser, forceSide);
  60.             }
  61.             input = scanner.nextLine();
  62.         }
  63.         users.entrySet().stream().sorted((f, s) -> {
  64.             int result = s.getValue().size() - f.getValue().size();
  65.             if (result == 0) {
  66.                 result = f.getKey().compareTo(s.getKey());
  67.             }
  68.             return result;
  69.         }).forEach(entry -> {
  70.             if (entry.getValue().size() != 0) {
  71.                 System.out.printf("Side: %s, Members: %d%n", entry.getKey(), entry.getValue().size());
  72.                 entry.getValue().stream().sorted(String::compareTo)
  73.                         .forEach(user -> System.out.println("! " + user));
  74.             }
  75.         });
  76.     }
  77. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top