【问题标题】:Edit Specific Instance of Object编辑对象的特定实例
【发布时间】:2014-09-02 19:16:01
【问题描述】:

假设我让玩家创建团队并创建团队调用团队类的新实例,该实例具有称为成员的数组列表。

现在在主类中,我如何在被邀请后将玩家添加到团队中?我在团队类中有一个 addPlayer 方法,只需将它们添加到数组列表中,但是如果当前有多个团队类实例(其他玩家创建了团队)怎么办?它怎么知道要加入哪一个?

我在 TeamLeader 的 Teams 类中确实有一个变量,如果这可以帮助我编辑某个实例,则在创建实例时设置该变量。

Team team = new Team(this, leader);

感谢任何帮助

【问题讨论】:

  • 你能贴出Team类的源代码以及你如何调用它的部分吗?

标签: java


【解决方案1】:

您需要一个标识符来唯一区分每个团队,您可以使用该标识符将团队存储在Map 中。像这样的:

Map<String,Team> teamMap = new HashMap<String,Team>();

根据您的要求选择密钥类型,我以字符串为例

【讨论】:

  • 是的,我认为我需要为每个团队提供某种唯一 ID,所以我认为 teamLeader 变量是团队的标识符,我只是不知道如何添加基于领队之类的。将玩家添加到已经创建的 Team 实例,其中 teamLeader = someplayer
【解决方案2】:

根据您的设计,您需要在创建后将所有团队保存在一个列表中。

ArrayList teamsList=new ArrayList ();
Team team = new Team(this, leader);
teamsList.add(team);

然后在 addPlayer 方法中遍历所有团队,然后比较领导者,然后添加一个球员。像这样的 -

public void addPlayer (Player player,String leader){

for(int i=0; i<teamListSize;i++)

    Team tempTeam=teamsList.get(i);

    if(tempTeam.getLeader().equalsIgnoreCase(leader)){

        tempTeam.add(player);
        break;
    }

}

【讨论】:

  • 看起来不错,我会试试这个,我想在创建时存储所有团队并循环它们,但我不确定你是否可以循环对象的所有当前实例
  • 所以 teamsList 数组不应该在 Team 类中,但您是从 Team 类中的 appPlayer 访问它?我正在我的主类中创建实例
  • 如果你将teamList作为一个实例变量(在main之外),它可以在addPlayer中访问。
猜你喜欢
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多