0

我有一个 Java 程序,它使用数组列表存储板球俱乐部球员的列表。在俱乐部类中,我有一个静态字段,用于跟踪俱乐部中注册的球员数量。我还为静态字段分配了一个玩家 ID,这样每次添加玩家时,他都会获得一个 ID。这是如何

id = regPlayer++;

regPlayer为静态字段,初始化为1

我遇到的问题是,如果我想从数组列表中删除一个播放器,我似乎无法更新 ID。例如,如果我有四个玩家,在我移除其中任何一个玩家之前,他们将拥有以下 ID:

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

如果我删除玩家 2,我现在希望第三个玩家的 ID 为 2,第四个玩家的 ID 为 3,如下所示:

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

有没有办法用 arraylists 实现这一点以及如何实现?

4

2 回答 2

2

ID 通常应该是不可变的。您不应该移动 ID,仅仅因为您想让 ID 加倍作为列表中的索引。所以不要更新ID。这与尝试更新某人的社会安全号码差不多……坏主意。

我只能猜测您希望 ID 反映索引位置,以便您可以以某种方式快速知道给定 Object 占据的位置。如果是这种情况,只需使用:List.indexOf(Object)来查找位置,而不是指望 ID代表位置。

于 2012-04-18T18:26:52.823 回答
0

您需要根据数组列表的索引分配 ID。当您删除元素并重新组织索引时,可以重新分配它。

于 2012-04-18T18:20:19.437 回答