需要一些關於如何更新列表的幫助。我有一個類,它定義了字符串名稱,字符串狀態,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