Java 更新特定实例的ArrayList

Java 更新特定实例的ArrayList,java,Java,这让我困惑了一段时间,想象一下 public class someObject { private ArrayList<Player> listOfPlayers = new ArrayList<Player>(); private String name; public void addPlayer(Player player){ listOfPlayers.add(player); } } 公共类someObject{ private ArrayList

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

public class someObject {

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

public void addPlayer(Player player){
    listOfPlayers.add(player);
}
}
公共类someObject{
private ArrayList listOfPlayers=new ArrayList();
私有字符串名称;
公共无效添加玩家(玩家){
添加(播放器);
}
}
这个对象的多个实例可以在游戏中创建,我不明白的是如何更新特定实例的ArrayList,例如

目前有10个someObject类Player 1、2等的实例。玩家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;
        }
}
for(inti=0;i

这是可行的,但在someObjects类的每个getter和setter中使用for循环似乎是错误的,有没有比这更好的方法?

更好的解决方案/替代方案是使用映射

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

如果您愿意,您可以修改“玩家”类并添加id。使用setter和getter,您可以使用此id处理这些问题。如果您更喜欢,这是一个想法。

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

Map<String, List<Players>> players =  new HashMap<String,List<Players>>();
players.put("player1", new SomeObject());
players.put("player2", new SomeObject());
....
Map players=newhashmap();
player1,newsomeobject());
player2,newsomeobject());
....
之后,您可以执行以下操作:

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

列表只是一个示例,该类有许多不同内容的列表。在我的主类中,onject是在someObject o=new someObject()中创建的;我可以使用objPlaersMap.get(someObject.contains)(player);这将在所有活动实例中搜索特定玩家?如何在地图中添加/删除列表而不每次创建新列表?如何?将有多个列表,listOfPlayers,ListOfShawns例如,如果可能,我如何通过ID(名称)获取实例?您可以使用键来实现差异,或者如果您希望,您可以为每种类型的列表创建一个映射,它们确实有一个ID,如何在不遍历所有实例的情况下获取列表中的玩家ID实例?有两种方法:使用映射获取特定实例(如@baki-answer)或返回ArrayList插入操作。你可以在ArrayList[4]中添加@example player 5。所以你每次都能得到正确的例子。
List<Players> player1 = players.get("player1");