Как поместить 2 arraylists в один hashmap? - PullRequest
1 голос
/ 17 апреля 2020

Итак, я создаю плагин и хочу поместить две ArrayList (из двух разных команд) в одну Hashmap, чтобы я мог получить обе команды следующим способом:

public static Teams getTeam(Player player) {

    if (!hasTeam(player))
        return null;
    return zombiesTeam.get(player) && survivorsTeam.get(player);

}

Вот два ArrayList и Hashmap, которые я хочу получить:

public static HashMap<zombiesTeam, survivorsTeam> playerTeams = new HashMap<zombiesTeam, survivorsTeam>(); 
public static ArrayList<Player> zombiesTeam = new ArrayList<Player>();
public static ArrayList<Player> survivorsTeam = new ArrayList<Player>();

PS Я знаю, что этот код неверен

Пожалуйста, спросите меня о любом дополнительная дополнительная информация

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Если вы хотите представить все свои «команды» с помощью хэш-карты из названия команды в список членов команды, я бы предложил следующее:

// In the same class where zombiesTeam and survivorsTeam are declared
public static Map<String, List<Player>> getTeamsByName() {
  Map<String, List<Player>> teamsByName = new HashMap<>();
  teamsByName.put("zombiesTeam", zombiesTeam);
  teamsByName.put("survivors", survivorsTeam);
  return teamsByName;
}

Однако убедитесь, что вам нужно использовать stati c поля и методы. Ваша модель этого не предлагает.

Например, вы можете объявить класс Team и класс Player. Поскольку у вас уже есть класс Player, вот как я бы сделал класс Team:

public class Team {
  private String name;
  private Set<Player> teamMembers = new HashSet<>();

  public Team(String name) {
    this.name = name;
  }

  public String getName() {
   return this.teamName;
  }

  public Set<Player> getTeamMembers() {
    return this.teamMembers;
  }

  public addPlayer(Player player) {
   this.teamMembers.add(player);
  }

  public removePlayer(Player player) {
   this.teamMembers.remove(player);
  }

  public reset() {
   this.teamMembers.clear();
  }
}

Обязательно переопределите equals и hashcode, чтобы HashSet и HashMap работали правильно. Подробнее об этом здесь: https://www.geeksforgeeks.org/equals-hashcode-methods-java/

0 голосов
/ 17 апреля 2020

Вы должны сделать что-то вроде этого:

public static HashMap<String, ArrayList<Player>> playerTeams = new HashMap<>();

playerTeams.put("zombies", zombiesTeam);
playerTeams.put("survivors", survivorsTeam );
...