2012-04-18 15 views
0

arraylistを使用しているクリケットクラブのプレイヤーのリストを格納しているJavaプログラムがあります。 クラブクラスには、クラブに登録されているプレーヤーの数を記録した静的フィールドがあります。また、プレーヤIDを静的フィールドに割り当てて、プレーヤが追加されるたびにIDを取得するようにします。これはオブジェクトを削除した後にarraylistを更新する

id = regPlayer++; 

regPlayerは1

私がいる問題のように初期化される静的フィールド、どのように私はArrayListのからプレイヤーを削除したい場合は、私があるように見えることができないということですIDを更新することができます。例えば 私は4人のプレーヤー、私はそれらのいずれか削除する前に、彼らは次のIDを持つことになります持っている場合:私は今、第三プレイヤーがIDを持っているID 2と第四プレイヤーを持ちたいプレイヤー2を削除した場合

Player 1 ID = 1 
Player 2 ID = 2 
Player 3 ID = 3 
Player 4 ID = 4 

を3のように:

Player 1 = 1 
Player 3 = 2 
Player 4 = 3 

arraylistsでこれを達成する方法はありますか?

+0

'playerId'が配列内のプレーヤーのインデックスにバインドされている場合、要素のインデックスを' playerId'として使うことができます。 –

答えて

2

IDは一般に不変である必要があります。 IDをリスト内のインデックスの2倍にする必要があるため、IDをシフトしないでください。だからのIDを更新しないでください。それは誰かの社会保障番号を更新しようとすることと同じです...悪い考えです。

IDがインデックスの位置を反映するようにして、特定のオブジェクトが占める位置を何とかすばやく知ることができると推測できます。その場合、ちょうどList.indexOf(Object)を使用してIDをカウントするのではなく、の位置を参照してください。の位置を表します。

+0

多分、OPがIDを再割り当てしたい理由を説明できるかもしれませんが、一般的には悪い考えです。 – darrengorman

+0

うーん、私はそれが論理的な答えだと思う。私はちょうどIDをシフトするかどうかについて決定的ではない。私はちょうど各プレーヤーのために独特のそれを残すことを推測する。おかげで –

+0

ようこそ。そして、あなたがここで新しいので、このサイトの仕組みは、あなたが質問し、あなたが得る1つ以上の答えが好きなら、あなたはそれらをアップアップすることができるということです。しばらくすると、最も役立つ回答が1つあれば、その横のチェックマークをクリックして回答を選択することができます。どちらの行動も回答者に「評判のポイント」を与えます。安いスリルですが、私が得られるものを取り上げます;-) –

0

アレイリストのインデックスに基づいてIDを割り当てる必要があります。要素を削除してインデックスを再編成するときに、再割り当てすることができます。

関連する問題