0

配列リストを使用してクリケットクラブの選手のリストを保存するJavaプログラムがあります。クラブクラスには、クラブに登録されているプレーヤーの数を追跡する静的フィールドがあります。また、静的フィールドにプレーヤーIDを割り当てて、プレーヤーが追加されるたびにIDを取得できるようにします。こうやって

id = regPlayer++;

regPlayerは静的フィールドであり、1として初期化されます。

私が抱えている問題は、アレイリストからプレーヤーを削除したい場合、IDを更新できないように見えることです。たとえば、4人のプレーヤーがいる場合、それらのいずれかを削除する前に、次のIDがあります。

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

プレーヤー2を削除すると、次のように、3番目のプレーヤーにID 2を、4番目のプレーヤーにID3を持たせる必要があります。

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

アレイリストを使用してこれを実現する方法はありますか?

4

2 に答える 2

2

IDは通常、不変である必要があります。IDをリストのインデックスとしても使用したいという理由だけで、IDをシフトするべきではありません。したがって、IDを更新しないでください。これは、誰かの社会保障番号を更新しようとするのとほぼ同じです...悪い考えです。

特定のオブジェクトがどの位置を占めているかをどういうわけかすばやく知ることができるように、IDにインデックス位置を反映させたいと推測することしかできません。その場合は、IDを使用して位置を表すのではなく、:を使用List.indexOf(Object)位置を検索します。

于 2012-04-18T18:26:52.823 に答える
0

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

于 2012-04-18T18:20:19.437 に答える