2012-03-26 98 views
0

目前,我有ArrayList,当它们被添加到俱乐部时,对象被存储在其中。我也有一个整数,一旦一个对象被添加到ArrayList中,它就会自动递增。但是,我不确定我能够如何在ArrayList中添加播放器对象的注册ID。添加到Java中ArrayList中的元素?

+0

你的Player类是怎么样的? Player类有一个int int registrationId属性吗? – Kent 2012-03-26 16:52:50

+0

你的'Player'类是什么样的?如果我可以假设'Player.setRegID(int)'是被定义的,那么它会很简单。 – nobeh 2012-03-26 16:53:32

+2

您的模型不需要您自己增加注册ID。每次向球员添加新对象时,阵列列表大小将自动递增。你可以通过players.size()获得大小。 如果你想问一个当前玩家对象有哪个ID,可以调用players.indexOf(player)。 – andreasg 2012-03-26 16:54:32

回答

2

它是不是从你的描述完全清楚什么正是你正在尝试做的,所以我猜是这样的:

public synchronized void registerPlayer(Player p) 
{ 
    p.setRegistrationId(registrationID++); 
    players.add(p); 
} 
2

一种解决方案是使用Map,其相关联与特定玩家的个人ID,作为键值对,而不是List

public class Club 
{ 

    private String clubName; 
    private int registrationID; 
    private Map<Player, Integer> players; 

    /** 
    * Create a club with given club name. 
    */ 
    public Club(String clubName) 
    { 
     players = new HashMap<Player, Integer>(); 
     this.clubName = clubName; 
     registrationID = 1; 
    } 

    public void registerPlayer(Player p) 
    { 
     // check if player is already in the club: 
     if (!players.containsKey(p)) { 
      players.put(p, new Integer(registrationID)); 
      // increment ID counter: 
      registrationID++; 
     } 
    } 

    public void listAll() 
    { 
     for (Player p : players.keySet()) { 
      System.out.println(p); 
     } 
    } 

} 
0

尝试再创建一个类:

public class Registration() { 
    private Player player; 
    private String registrationId; 

    public Registration(Player p) { 
     // Assign p to player 
     // Generate the registration ID 
    } 
} 

然后只需要ArrayList<Registration> registrations来保存所有这些。然后您的listAll()方法将需要引用i.getNext().getPlayer()来执行相同的操作。

0

我猜测玩家有一个你想在添加到数组列表后设置的ID字段?

如果您知道播放器的索引,只需使用get方法获取对象并设置ID。如果你没有索引,你将不得不遍历数组列表来找到你的对象。

相关问题