Java 删除对象后更新arraylist

Java 删除对象后更新arraylist,java,arrays,Java,Arrays,我有一个Java程序,它使用arraylist存储板球俱乐部球员的列表。 在俱乐部课程中,我有一个静态字段,用于记录俱乐部注册的球员数量。我还为静态字段分配了一个玩家ID,这样每次添加一个玩家时,他都会得到一个ID id = regPlayer++; regPlayer是静态字段,初始化为1 我遇到的问题是,如果我想从arraylist中删除一个播放器,我似乎无法更新ID。 例如,如果我有四名玩家,在我删除他们之前,他们将拥有以下ID: Player 1 ID = 1 Player 2 ID

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

id = regPlayer++;
regPlayer是静态字段,初始化为1

我遇到的问题是,如果我想从arraylist中删除一个播放器,我似乎无法更新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

是否有一种方法可以通过ArrayList实现这一点,以及如何实现?

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

ID通常是不可变的。您不应该仅仅因为希望将ID作为索引添加到列表中而移动ID。所以不要更新ID。这与试图更新某人的社会保险号码大致相同。。。坏主意


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

如果
playerId
绑定到数组中玩家的索引,则可以使用元素的索引作为
playerId
。是的,也许OP可以解释为什么他们想重新分配身份证,但总的来说这是个坏主意。嗯,我想这是一个合乎逻辑的答案。我只是对是否改变身份证犹豫不决。我想我会让每个球员都有自己的风格。谢谢,不客气。因为你是新来的,这个网站的运作方式是,如果你问一个问题,并且喜欢你得到的一个或多个答案,你可以“投票”他们。一段时间后,如果有一个答案对你最有帮助,你可以点击旁边的复选标记来选择这个答案。这两个动作都会给回答者“荣誉点数”——一种廉价的刺激,但我会尽我所能;-)