2012-03-26 7 views
0

クラスの中には、オブジェクトがクラブに追加されたときにオブジェクトが格納されるArrayListがあります。オブジェクトがArrayListに追加されると、自動的にインクリメントされる整数もあります。しかし、ArrayListにプレーヤーオブジェクトの登録IDを追加する方法がわかりません。JavaのArrayListの要素に追加しますか?

+0

Playerクラスはどのように見えますか? PlayerクラスはプロパティIDを持っていますか? – Kent

+0

'Player'クラスはどのように見えますか? 'Player.setRegID(int)'が定義されていると仮定することができれば、それは簡単です。 – nobeh

+2

あなたのモデルが自分で登録IDをインクリメントする必要はありません。 新しいオブジェクトをプレイヤーに追加するたびに、arraylistのサイズが自動的に増分されます。 players.size()でサイズを取得できます。 現在のプレイヤーオブジェクトが持つidを質問する場合は、players.indexOf(player)を呼び出します。 – andreasg

答えて

2

それはあなたの説明からは完全に明らかではないが、どのような正確にあなたがやろうとしているので、私はこのような何かを推測しています:

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

一つの解決策は、代わりに、キーと値のペアとして、特定のプレイヤーとの個別IDを関連付けるMapを、使用することです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

私は、プレイヤーがarraylistに追加した後に設定したいIDのフィールドを持っていると推測していますか?

Playerのインデックスがわかっている場合は、getメソッドでオブジェクトを取得し、IDを設定するだけです。インデックスがない場合は、オブジェクトを見つけるためにarraylistをループする必要があります。