2014-09-02 52 views
1

假设我让玩家创建团队并创建一个团队调用团队类的新实例,该实例具有一个名为成员的数组列表。编辑对象的特定实例

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

我确实在创建实例时设置的teamLeader在团队类中有一个变量,如果这可以帮助我编辑某个实例的话。

Team team = new Team(this, leader); 

任何帮助appreiciated

+3

你可以发布'Team'类的源代码和你如何调用它的部分吗? – reporter 2014-09-02 10:55:50

回答

1

你需要一个标识符来唯一区分每个团队,你可以使用该标识的球队存储在Map。事情是这样的:

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

选择的密钥类型按照您的要求,我选择了字符串为例

+0

是的,我以为我会为每个球队需要一些独特的ID,所以我想到teamLeader变量是球队的标识符,我只是不知道我会如何加入一个基于团队领导者的团队,比如。添加球员到团队已经制作的实例,其中teamLeader = someplayer – user3439600 2014-09-02 11:01:18

0

根据你的设计,你需要让所有的球队在列表创建之后。

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

} 
+0

看起来不错我会尝试这一点,我想过在创建时存储所有团队并循环播放它们,但我不确定是否可以遍历所有当前的对象实例 – user3439600 2014-09-02 11:19:26

+0

因此,teamsList数组不应该在Team类中,而是从Team类中的appPlayer访问它?我在我的主类中创建实例 – user3439600 2014-09-02 11:26:13

+0

如果您将teamsList作为实例变量(在main之外),它可以在addPlayer中访问。 – 2014-09-02 11:27:39