2012-04-18 116 views
0

我有一个Java程序,它存储了一个使用arraylist的板球俱乐部球员列表。 在俱乐部的课堂上,我有一个静态的场地,可以跟踪俱乐部注册的球员人数。此外,我还将玩家ID分配给静态字段,以便每次添加玩家时都会获得ID。这是删除对象后更新arraylist

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

如果'playerId'绑定到数组中的播放器的索引,则可以使用该元素的索引作为'playerId'。 – 2012-04-18 18:21:17

回答

2

ID通常应该是不可变的。你不应该改变ID,只是因为你想把ID作为一个索引进入列表。所以不要更新ID。这与尝试更新某人的社会安全号码是一样的...坏主意。

我只能猜测你想让ID反映索引位置,这样你可以很快地知道给定对象占据了哪个位置。如果是这种情况,只需使用:List.indexOf(Object)来查找位置,而不是指向的ID,也就是代表的位置。

+0

是的,也许OP可以解释他们为什么要重新分配ID,但总的来说这是一个坏主意。 – darrengorman 2012-04-18 18:30:13

+0

嗯,我想这是一个合乎逻辑的答案。我对于是否改变了ID还没有做出决定。我想我会让每个球员都独一无二。谢谢 – 2012-04-18 18:30:38

+0

不客气。既然你是新来的,这个网站的工作方式是,如果你问一个问题并且喜欢你得到的一个或多个答案,你可以“高举”它们。经过一段时间后,如果有一个特定的答案最能帮助你,你可以点击旁边的复选标记来选择答案。这两项行动都给予回答者“信誉点” - 一种便宜的刺激,但我会把我所能得到的;-) – 2012-04-18 18:51:35

0

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