需要一些关于如何更新列表的帮助。我有一个类,它定义了字符串名称,字符串状态,float lat和float long的对象。如果对象存在,则更新数组列表
每次玩家移动一台服务器向我发送这些变量的异步消息时,唯一改变的可以是状态经纬度和长度,这是我想要“覆盖”的那个。这个名字是独一无二的,所以我猜测我必须根据这个来搜索,因为这是永远不会改变的事情。我想更新现有的对象以防止一个玩家出现多次。
我的(非功能性)到目前为止的代码:
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
}
这可能是一些明显的,但我真的不知道如何查找和替换的对象。我之后的功能是:
- 检查列表是否为空,在这种情况下,无法在其中添加播放器,因此只需添加一个。
- 如果列表存在循环,并查找对象的名称。
- 如果名称存在,只需再次创建相同的播放器,但其更新值位于同一索引处。
- 该列表存在但名称未找到,因此只需添加播放器即可。
我的代码到目前为止让我在一个永无止境的循环我猜,因为应用程序停止响应。 split变量是从异步调用中分离出来的一个词,这是我通过打印检查的名称。
听起来像[图](http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Map.html)给我...... – dmon 2012-03-12 00:22:26