SvilenVelikov

9. *ForceBook

Apr 30th, 2020
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.34 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class ForceBook {
  4. public static void main(String[] args) {
  5. Scanner sc = new Scanner(System.in);
  6.  
  7. TreeMap<String, ArrayList<String>> forceBook = new TreeMap<>();
  8. String input = sc.nextLine();
  9. while (!"Lumpawaroo".equals(input)) {// {forceSide} | {forceUser}
  10. String[] tokens;
  11. if (input.contains("|")) {
  12. tokens = input.split(" \\| ");
  13. String forceSide = tokens[0];
  14. String forceUser = tokens[1];
  15. boolean isUserIn = false;
  16.  
  17. for (Map.Entry<String, ArrayList<String>> elem : forceBook.entrySet()) { //има ли го вече User-а
  18. if (elem.getValue().contains(forceUser)) {
  19. isUserIn = true;
  20. break;
  21. }
  22. }
  23.  
  24. if (!isUserIn) { //със сигурност User-а е нов!!!
  25. if (!forceBook.containsKey(forceSide)) {
  26. forceBook.put(forceSide, new ArrayList<>());
  27. forceBook.get(forceSide).add(forceUser);
  28. } else if (forceBook.containsKey(forceSide) && !forceBook.get(forceSide).contains(forceUser)){
  29. forceBook.get(forceSide).add(forceUser);
  30. }
  31. }
  32.  
  33. // if (!String.join("", forceBook.get(forceSide)).contains(forceUser)) {
  34. // forceBook.get(forceSide).add(forceUser);
  35. // }
  36. } else if (input.contains(" -> ")) {
  37. // {forceUser} -> {forceSide}
  38. tokens = input.split(" -> ");
  39. String forceSide = tokens[1];
  40. String forceUser = tokens[0];
  41.  
  42. for (Map.Entry<String, ArrayList<String>> elem : forceBook.entrySet()) {
  43. if (elem.getValue().contains(forceUser)) {
  44. elem.getValue().remove(forceUser);
  45. break;
  46. }
  47. }
  48.  
  49. if (!forceBook.containsKey(forceSide)) {
  50. forceBook.put(forceSide, new ArrayList<>());
  51. forceBook.get(forceSide).add(forceUser);
  52. System.out.println(String.format("%s joins the %s side!", forceUser, forceSide));
  53. } else if (forceBook.containsKey(forceSide) && !forceBook.get(forceSide).contains(forceUser)) {
  54. forceBook.get(forceSide).add(forceUser);
  55. System.out.println(String.format("%s joins the %s side!", forceUser, forceSide));
  56. }
  57. }
  58. input = sc.nextLine();
  59. }
  60.  
  61. forceBook
  62. .entrySet()
  63. .stream()
  64. .filter(users -> users.getValue().size() > 0)
  65. .sorted((v1, v2) -> Integer.compare(v2.getValue().size(), v1.getValue().size()))
  66. .forEach(z -> {
  67. System.out.println(String.format("Side: %s, Members: %d", z.getKey(), z.getValue().size()));
  68.  
  69. z.getValue()
  70. .stream()
  71. .sorted((s1, s2) -> s1.compareTo(s2))
  72. .forEach(s -> System.out.println(String.format("! %s", s)));
  73. });
  74. }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment