2015-05-24 42 views
-1
public ArrayList<Player> addPlayer(String playerName, int playerWorth, int playerSpent) 
{ 
    Player newPlayer = new Player(); 
    newPlayer.setPlayerName(playerName); 
    newPlayer.setPlayerWorth(playerWorth); 
    newPlayer.setPlayerSpent(playerSpent); 
    playerAList.add(newPlayer); 
    return playerAList; 
} 

如何从不同的类访问上述方法而不必覆盖arraylist中的对象?我正在尝试创建一个新的Player并设置其名称/值/花费,然后将其添加到playerAListarraylist而不是覆盖它。将对象添加到arrayList而不覆盖它

+1

当然可以!只需自己检查一下 – Lrrr

+1

你可能需要改写你的问题。目前还不清楚你想要什么。 –

+2

上述['ArrayList.add()'](http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#add%28E%29)不会覆盖项目在列表中。如果遇到问题,它可能位于其他地方,例如在'Player'中。 – dejvuth

回答

1

似乎您试图将唯一的对象在ArrayList。但是当添加一个与之前的项目完全相似的新项目时,ArrayList不会覆盖较早的项目。 ArrayList保留所有重复项目。如果您不想保留重复项目,那么您可以使用HashSet(重写equals()方法和hashCode()方法)。但是如果你还是想用ArrayList,在这种情况下,您可以按以下步骤操作:

1.覆盖您Playerequals()方法。覆盖你等于你想要识别你的球员的唯一性的财产的方法。
2.增加ArrayList使用ArrayList.contains()方法来评价一个项目是否已经在ArrayList之前就存在 -

Player newPlayer = new Player(); 
newPlayer.setPlayerName(playerName); 
newPlayer.setPlayerWorth(playerWorth); 
newPlayer.setPlayerSpent(playerSpent); 

if(!playerAList.contains(newPlayer)){ 
    playerAList.add(newPlayer); 
}