java在ArrayList中修改ArrayList
我有三节课。玩家等级:
public class Player
{
private String playerName;
private int playerWorth;
private int playerSpent;
// A list of player prize objects.
private ArrayList<Prize> playerPrizeList;
public void Player()
{
playerPrizeList = new ArrayList <Prize>();
playerName = "";
playerWorth = 0;
playerSpent = 0;
}
public void playerDetails(String playerName, int playerWorth, int playerSpent)
{
setPlayerName(playerName);
setPlayerWorth(playerWorth);
setPlayerSpent(playerSpent);
}
public void prize(String prizeName, int prizeWorth, int prizeCost)
{
populatePrize(prizeName, prizeWorth, prizeCost);
}
private void populatePrize(String prizeName, int prizeWorth, int prizeCost)
{
playerPrizeList.add(new Prize(prizeName, prizeWorth, prizeCost));
}
另一个类是PlayerList类,在这个类中,我试图将一个新的player对象添加到一个arrayList中,这个arrayList可以工作,但是在这个player类中,我还有一个prizeList数组(奖品对象)。将播放器添加到ArrayList后,如何检索该对象并更改(我的最后一块代码)。我希望我正确地解释了这一点
public class PlayerList
{
private ArrayList<Player> playerAList;
public PlayerList()
{
playerAList = new ArrayList<Player>();
}
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;
}
/**
* @i is the index of ArrayList for Player Prizes
*/
public void setPlayerPrizeList(int i, String prizeName, int prizeWorth, int prizeCost)
{
playerAList.get(i) = currentPlayer;
currentPlayer.populatePrize(prizeName, prizeWorth, prizeCost);
playerAList.set(i, currentPlayer);
return playerAList;
}
# 1 楼答案
总的来说,你的方法看起来不错
但是,您的代码中存在一些问题:
不能为方法调用赋值
然而,这应该是可行的:
除此之外,您不需要此行:
使用此方法更改的
Player
将保留在列表中并“自动更新”,因为所有更改都在同一内存块上执行,因此已在其中创建了Player
。您的playerAList
和currentPlayer
都持有对此内存块的引用还有一件事是错的。不能从返回类型为
void
的方法中return
任何内容:总之,您的方法
setPlayerPrizeList()
应该如下所示: