Advertisement
Lokha

Untitled

Apr 17th, 2020
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. import lombok.AllArgsConstructor;
  2. import lombok.Data;
  3.  
  4. import java.util.*;
  5.  
  6. public class Debug{
  7. public static void main(String[] args) throws Exception {
  8. GameGroup skyWars = new GameGroup("skyWars");
  9. GameGroup bedWars = new GameGroup("bedWars");
  10.  
  11. List<PlayGame> playGames = new ArrayList<>();
  12.  
  13. playGames.add(new PlayGame(new Party(1), skyWars, Arrays.asList("karta1", "karta2")));
  14. playGames.add(new PlayGame(new Party(2), bedWars, null));
  15. playGames.add(new PlayGame(new Party(3), skyWars, null));
  16. playGames.add(new PlayGame(new Party(4), skyWars, Arrays.asList("karta1")));
  17. playGames.add(new PlayGame(new Party(5), bedWars, null));
  18. playGames.add(new PlayGame(new Party(6), bedWars, Arrays.asList("karta1")));
  19. playGames.add(new PlayGame(new Party(7), skyWars, null));
  20.  
  21. List<Session> sessions = new ArrayList<>();
  22.  
  23. // идем по очереди и создаем сессию на каждую GameGroup+карту, которые есть в очереди
  24. for(PlayGame playGame : playGames){
  25. List<String> maps = playGame.getMapNames();
  26. if(maps == null){
  27. Session session = sessions.stream()
  28. .filter(it -> it.getGameGroup().equals(playGame.getGameGroup()))
  29. .findFirst().orElse(null);
  30. if(session == null){
  31. sessions.add(new Session(playGame.getGameGroup(), null));
  32. }
  33. } else {
  34. for(String map : maps){
  35. Session session = sessions.stream()
  36. .filter(it -> it.getGameGroup().equals(playGame.getGameGroup()))
  37. .filter(it -> Objects.equals(it.getMapName(), map))
  38. .findFirst().orElse(null);
  39. if(session == null){
  40. sessions.add(new Session(playGame.getGameGroup(), map));
  41. }
  42. }
  43. }
  44. }
  45.  
  46. for(PlayGame playGame : playGames){
  47. for(Session session : sessions){
  48. if(session.getGameGroup().equals(playGame.getGameGroup())){
  49. if(playGame.getMapNames() == null){
  50. // если искомая карта - любая, то добавляем во все сессии с таким же GameGroup
  51. session.getPlayGames().add(playGame);
  52. } else if (playGame.getMapNames().contains(session.getMapName())) {
  53. // в противном случае добавляем только в те сессии, где такая же карта
  54. session.getPlayGames().add(playGame);
  55. }
  56. }
  57. }
  58. }
  59.  
  60. for(Session session : sessions){
  61. System.out.println("session: " + session.getGameGroup() + " with map " + session.getMapName() + ": ");
  62. for(PlayGame playGame : session.getPlayGames()){
  63. System.out.println(" playGame: " + playGame);
  64. }
  65. }
  66. }
  67.  
  68. @Data
  69. @AllArgsConstructor
  70. public static class Party {
  71. private int id;
  72.  
  73. }
  74.  
  75. @Data
  76. @AllArgsConstructor
  77. public static class GameGroup {
  78. private String name;
  79. }
  80.  
  81. @Data
  82. @AllArgsConstructor
  83. public static class PlayGame {
  84. private Party party;
  85. private GameGroup gameGroup;
  86. private List<String> mapNames;
  87. }
  88.  
  89. @Data
  90. public static class Session {
  91. private GameGroup gameGroup;
  92. private String mapName;
  93. private Set<PlayGame> playGames = new HashSet<>();
  94.  
  95. public Session(GameGroup gameGroup, String mapName){
  96. this.gameGroup = gameGroup;
  97. this.mapName = mapName;
  98. }
  99. }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement