这让我困惑了一段时间,想象一下这个
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循环似乎都错了,有没有比这更好的方法?
答案 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");