将对象添加到arrayList而不覆盖它

时间:2015-05-24 11:58:30

标签: java list arraylist

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并设置其名称/值/花费,然后将其添加到arraylist playerAList而不是覆盖它。

2 个答案:

答案 0 :(得分:1)

除非您明确告诉他们,否则不会覆盖ArrayList对象,只是在您向其中插入数据时移动内容。

话虽这么说,访问底层数据结构而不实际篡改它们的好方法是迭代器 http://www.tutorialspoint.com/java/java_using_iterator.htm

答案 1 :(得分: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);
}