gpt4 book ai didi

android - 如果对象存在则更新数组列表

转载 作者:行者123 更新时间:2023-11-29 14:41:11 24 4
gpt4 key购买 nike

需要一些关于如何更新列表的帮助。我有一个类用字符串名称、字符串状态、 float 纬度和 float 长度定义对象。

每当玩家移动时,服务器都会向我发送一条包含这些变量的异步消息,唯一改变的可能是状态纬度和经度,它们是我想要“覆盖”的。这个名字是独一无二的,所以我猜我必须根据它进行搜索,因为它永远不会改变。我想更新现有对象以防止一个玩家出现多次。

到目前为止我的(非功能性)代码:

    if(players.size()==0){ ///// 1.
Player p = new Player();
p.name = split[2];
p.status = split[3];
p._lat = Float.valueOf(split[4]);
p._long = Float.valueOf(split[5]);
players.add(p);
}//This works


else{ ///// 2.
for(int i = 0; i < players.size(); i++){ ///// 3.
if(players.get(i).name.equals(split[2])){
Player p = new Player();
p.name = split[2];
p.status = split[3];
p._lat = Float.valueOf(split[4]);
p._long = Float.valueOf(split[5]);
players.add(p);
players.add(i, p);
}
else{ ///// 4.
Player p = new Player();
p.name = split[2];
p.status = split[3];
p._lat = Float.valueOf(split[4]);
p._long = Float.valueOf(split[5]);
players.add(p);
}
}//This doesnt
}

这可能是显而易见的事情,但我真的不知道如何搜索和替换对象。我追求的功能是:

  1. 检查列表是否为空,如果没有,则添加一个。
  2. 如果列表存在,循环遍历它并查找对象的名称。
  3. 如果名称存在,只需再次创建相同的播放器,但其更新值位于相同的索引处。
  4. 列表存在,但找不到名称,所以只需添加播放器即可。

到目前为止,我的代码让我陷入了一个永无止境的循环,我猜是因为应用程序停止响应。 split 变量是从异步调用中拆分出来的一个词,它是名称,我已经通过打印检查过了。

最佳答案

代替

players.add(p);
players.add(i, p);

使用

players.set(i, p)

关于android - 如果对象存在则更新数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com