Advertisement
desislava_topuzakova

Untitled

Jul 8th, 2022
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class ForceBook_09 {
  4. public static void main(String[] args) {
  5. Scanner scanner = new Scanner(System.in);
  6. String input = scanner.nextLine();
  7. //запис: отбор -> списък с играчи
  8. Map<String, List<String>> map = new LinkedHashMap<>();
  9.  
  10. while (!input.equals("Lumpawaroo")) {
  11. if (input.contains("|")) {
  12. //"{force_side} | {force_user}".split(" | ") -> ["{force_side}", "{force_user}"]
  13. String team = input.split(" \\| ")[0];
  14. String player = input.split(" \\| ")[1];
  15. //проверка дали имаме отбора
  16. if (!map.containsKey(team)) {
  17. //отбор -> празен списък за играчите
  18. map.put(team, new ArrayList<>());
  19. }
  20. //имаме такъв отбор -> добавяме към отбора играча, ако го няма в НИКОЙ ОТБОР
  21. boolean isExist = false; //играча го има в някой отбор
  22. for (List<String> list : map.values()) {
  23. if (list.contains(player)) {
  24. isExist = true;
  25. }
  26. }
  27. if (!isExist) {
  28. map.get(team).add(player);
  29. }
  30.  
  31. } else if (input.contains("->")) {
  32. //"{force_user} -> {force_side}".split(" -> ") -> ["{force_user}", "{force_side}"]
  33. String player = input.split(" -> ")[0];
  34. String team = input.split(" -> ")[1];
  35.  
  36. //1. ако играч го има в някой от отборите -> remove
  37. map.entrySet().forEach(entry -> entry.getValue().remove(player));
  38.  
  39. //2. проверка дали съществува отбора
  40. if (map.containsKey(team)) {
  41. List<String> currentPlayers = map.get(team);
  42. currentPlayers.add(player);
  43.  
  44. } else {
  45. //нямаме такъв отбор
  46. //отбор -> празен списък за играчите
  47. map.put(team, new ArrayList<>());
  48. map.get(team).add(player);
  49. }
  50.  
  51. System.out.printf("%s joins the %s side!%n", player, team);
  52. }
  53.  
  54. input = scanner.nextLine();
  55. }
  56.  
  57. //премахнем отборите, в които няма играчи
  58. //запис: отбор -> списък с играчи
  59. //filter -> оставяме само отговарящите на условието
  60. //премахваме всички, които entry.getValue().size() <= 0
  61. map.entrySet().stream().filter(entry -> entry.getValue().size() > 0) //оставяме само тези записи, които отговарят на условието
  62. .forEach(entry -> {
  63. //Side: Lighter, Members: 3
  64. System.out.printf("Side: %s, Members: %d%n", entry.getKey(), entry.getValue().size());
  65. entry.getValue().forEach(player -> System.out.println("! " + player));
  66. }
  67. );
  68. }
  69. }
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement