Итак, я написал эту функцию, которая получает список пользователей и их местоположения (это приложение для мобильного телефона), она вставляет правильные значения в hashmap (ret.put (...)), но как только функция возвращается, все значения на карте были установлены на неправильный идентификатор пользователя 0 и расположение 0,0. Мне кажется, что Java удаляет fmsg, который затем удаляет UserID и Location, которые я поместил на карту. Что вы, ребята, думаете?
public HashMap<UserID, Location> getFriendsLocations(ArrayList<UserID> friends) {
MessageHdr hdr = new MessageHdr(sock);
hdr.len = 2;
hdr.id = MessageID.FRIENDS.id;
//Transmit the list of users' we are interested in
for(UserID u : friends) {
if(!hdr.send() || !u.send())
return null;
}
//Now, start receiving responses from the server.
HashMap<UserID, Location> ret = new HashMap<UserID, Location>();
FriendsMsg fmsg = new FriendsMsg(sock);
for(int i = 0; i < friends.size(); i++) {
if(fmsg.recv())
ret.put(fmsg.uid, fmsg.loc);
}
return ret;
}