我有一个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
有没有办法通过arraylists实现这一点以及如何实现?
答案 0 :(得分:2)
ID通常应该是不可变的。您不应该更改ID,只是因为您想将ID加倍作为列表的索引。所以不更新ID。这跟尝试更新某人的社会安全号码差不多......糟糕的主意。
我只能猜测您希望ID反映索引位置,以便您可以以某种方式快速了解给定Object占用的位置。如果是这种情况,只需使用:List.indexOf(Object)
查找位置,而不是依靠ID来也代表位置。
答案 1 :(得分:0)
您需要根据数组列表的索引分配ID。删除元素时可以重新分配它,并重新组织索引。