Нужна помощь в обновлении списка. У меня есть класс, который определяет объект с именем строки, статусом строки, float lat и float long.
Каждый раз, когда игрок перемещает сервер, он посылает мне асинхронное сообщение с этими переменными, единственное, что может измениться, это статус lat и 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 - это одно слово, отделенное от асинхронного вызова, и это имя, которое я проверил, напечатав его.