更新特定实例的ArrayList

时间:2014-09-25 08:33:01

标签: java

这让我困惑了一段时间,想象一下这个

public class someObject {

private ArrayList<Player> listOfPlayers = new ArrayList<Player>();
private String name;

public void addPlayer(Player player){
    listOfPlayers.add(player);
}
}

在游戏过程中可以创建此对象的多个实例,我不明白的是如何更新特定实例的ArrayList,例如

目前有someObject类播放器1,2的10个实例,依此类推。玩家5想要将一个玩家添加到他的listOfPlayers中,我将如何处理他当前在listOfPlayers中的特定实例的arraylist。

我一直在做的是

for (int i = 0; i < objects.size(); i ++){ //ArrayList<someObject>
        someObject temp = someObject.get(i);
        if (temp.listOfPlayers.contains(player)){
            return true;
        }
}

哪个有效,但在someObjects类的每个getter和setter中使用for循环似乎都错了,有没有比这更好的方法?

3 个答案:

答案 0 :(得分:0)

更好的解决方案/替代方案是使用Map。

Map<someObject, List<Players>> objPlayersMap=  new HashMap.....

稍后,您可以像

一样检查您的情况
objPlaersMap.get(someObject).contains(...

答案 1 :(得分:0)

如果你愿意,你可以修改你的&#34;播放器&#34;类并添加一个id。使用setter和getter你可以用这个id处理这些。这是一个想法,如果你想更喜欢它。

答案 2 :(得分:0)

最好的方法是使用带有播放器名称的地图作为关键字。通过这种方式,您可以轻松获取列表而无需循环

Map<String, List<Players>> players =  new HashMap<String,List<Players>>();
players.put("player1", new SomeObject());
players.put("player2", new SomeObject());
....

之后你就这样做了:

List<Players> player1 = players.get("player1");