【问题标题】:How to put 2 arraylists into one hashmap?如何将 2 个数组列表放入一个哈希图中?
【发布时间】:2020-04-17 09:17:11
【问题描述】:

所以我正在制作一个插件,我想将两个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>();

附:我知道这段代码不正确

请向我询问更多信息

提前致谢。

【问题讨论】:

  • 两支球队都有什么意思?我不明白你真正希望做什么?
  • 你可以使用Stream.concat().collection()

标签: java minecraft bukkit


【解决方案1】:

你应该这样做:

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

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

【讨论】:

    【解决方案2】:

    如果您想通过从团队名称到团队成员列表的哈希图来表示您的所有“团队”,我建议这样做:

    // 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;
    }
    

    但是,请确保您需要使用静态字段和方法。您的模型不建议这样做。

    例如,您可以声明一个 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      相关资源
      最近更新 更多