Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. package AssociativeArrays;
  2.  
  3. import java.util.*;
  4.  
  5. public class ForceBook {
  6. public static void main(String[] args) {
  7. Scanner scanner = new Scanner(System.in);
  8. String input = scanner.nextLine();
  9. TreeMap<String, List<String>> sideUsers = new TreeMap<>();
  10. while (!input.equalsIgnoreCase("Lumpawaroo")) {
  11. if (input.contains("|")) {
  12. String[] tokens = input.split("\\|");
  13. tokens[0] = tokens[0].trim();
  14. tokens[1] = tokens[1].trim();
  15. boolean isContaining = false;
  16. for (Map.Entry<String, List<String>> stringListEntry : sideUsers.entrySet()) {
  17. if (stringListEntry.getValue().contains(tokens[1])) {
  18. isContaining = true;
  19. break;
  20. }
  21. }
  22. if (!sideUsers.containsKey(tokens[0]) && !isContaining) {
  23. sideUsers.put(tokens[0], new ArrayList<>());
  24. sideUsers.get(tokens[0]).add(tokens[1]);
  25. } else {
  26. if (sideUsers.containsKey(tokens[0])
  27. && !isContaining
  28. && !sideUsers.get(tokens[0]).contains(tokens[1])) {
  29. sideUsers.get(tokens[0]).add(tokens[1]);
  30. }
  31. }
  32. } else {
  33. String[] tokens = input.split("->");
  34. tokens[0] = tokens[0].trim();
  35. tokens[1] = tokens[1].trim();
  36. for (Map.Entry<String, List<String>> stringListEntry : sideUsers.entrySet()) {
  37. if (stringListEntry.getValue().contains(tokens[0])) {
  38. stringListEntry.getValue().remove(tokens[0]);
  39. break;
  40. }
  41. }
  42. if (!sideUsers.containsKey(tokens[1])) {
  43. sideUsers.put(tokens[1], new ArrayList<>());
  44. sideUsers.get(tokens[1]).add(tokens[0]);
  45. } else {
  46. if (sideUsers.containsKey(tokens[1]) &&
  47. !sideUsers.get(tokens[1]).contains(tokens[0])) {
  48. sideUsers.get(tokens[1]).add(tokens[0]);
  49. }
  50. }
  51. System.out.printf("%s joins the %s side!%n", tokens[0], tokens[1]);
  52. }
  53. input = scanner.nextLine();
  54. }
  55. sideUsers.entrySet()
  56. .stream()
  57. .filter(a -> a.getValue().size() > 0)
  58. .sorted(Map.Entry.<String, List<String>>comparingByValue(Comparator.comparing(List::size)).reversed())
  59. .forEach(s -> {
  60. System.out.printf("Side: %s, Members: %d%n", s.getKey(), s.getValue().size());
  61. s.getValue()
  62. .stream()
  63. .sorted(String::compareTo)
  64. .forEach(e -> System.out.printf("! %s%n", e));
  65. });
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement