Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > доступ к объекту в списке по public String id


Автор: mansoff 5.12.2012, 12:48
Ребят вопрос из области списков,

Есть чат на сокетах,
есть список объектов Array<User>, которые обрабатывают каждого юзера,
бродкаст делается просто - идёт отсылка всем одного сообщения,
отсылка приват сообщения сводится к тому, что перебором находится нужный юзер, и отсылается ему одному сообщение,

а можно ли на java зная ID юзера (public String в объекте User) из масива\списка объектов сразу выбрать нужный?

P.S. на java 100 лет не писал  smile 

Автор: Nofate 5.12.2012, 13:01
Можно для индексирования воспользоваться хэш-таблицей HashMap<String, User>. Тогда по имени будете сразу получать пользователя.

Код

Map<String, User> userMap = new HashMap<String, User>();
...
userMap.put(someUser.getName, someUser)
...
User user = userMap.get(someUserName);

Автор: _Y_ 5.12.2012, 13:55
Просто добавлю пояснение к сказанному Nofate.

У вас имеется набор объектов класса User, который хранится в списке типа Array. Можно заменить список хэш-таблицей. 

Но если почему-то неудобно производить такую замену (например слишком много кода придется менять), можно сделать дополнительную хеш-таблицу и хранить там те же ссылки, что и в списке.

Я лично сделал бы класс-наследник от Array, внутри которого создал приватную хеш-таблицу. В классе переписал бы методы добавляющие и убирающие элементы списка, чтобы параллельно добавлять-убирать и в таблицу. Дополнительно создал бы метод вроде 
Код

public User getUser(String id){
     return  userMap.get(id);
}

и получал бы ссылку на объект User с данным id, вызывая этот метод. 

Автор: mansoff 5.12.2012, 15:28
Спасибо! Будем допиливать smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)