| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Доступ к HashSet |
| Автор: GrayVulf 4.2.2010, 16:30 | ||||
| Скажите, можно ли получить доступ к объекту находящемуся в HashSet, для изменения его переменных Это объект,
в цикле требуется инкрементировать его поле i Это код в котором происходит изменение
Или это, принципиально, невозможно? |
| Автор: LSD 4.2.2010, 17:45 |
| А где HashSet то? А вообще HashSet.get() возвращает именно ссылку на объект и дальше ты можешь с ним делать все что хочешь, в том числи и инкрементировать поле (если доступ есть). |
| Автор: GrayVulf 4.2.2010, 17:56 |
| В этом-то и весь вопрос, что у HashSet не определен метод get(), отсутствует. |
| Автор: LSD 4.2.2010, 18:32 |
| Я неправильно понял вопрос. В твоем случае надо использовать HashMap<Integer, CounterForSet>, тогда все будет просто и логично. |
| Автор: GrayVulf 4.2.2010, 18:47 | ||
| Да, в данном случае с HashMap все гораздо проще и логичней. Но хочется выяснить возможен ли доступ к объекту в HashSet или нет. Казалось бы при наличии метода HashSet.contains(Object), который определяет наличие объекта, так же легко можно было и получить к нему доступ. Единственное, как у меня получилось получить доступ к объекту это использовать Iterator, то есть методом перебора. Нерационально и геморройно
|
| Автор: GrayVulf 4.2.2010, 19:22 | ||
Да, объект equals(), но при инкрементировании поля этого объекта, объект который в HashSet не меняется. Это же разные объекты, и equals() они по другим полям.
По идее, тогда должен быть правилен этот код. Но он не работает, объекты в контейнере не изменяются. |
| Автор: COVD 4.2.2010, 19:37 |
| deleted |
| Автор: GrayVulf 4.2.2010, 20:01 |
| Это что значит? Обсуждение закончено? |
| Автор: COVD 4.2.2010, 20:26 |
| Нет, я удалил свою ошибку Обьект в Set хранится по ключу, который автоматически вычисляется, т.е. это очевидно hashCode. Этим Set и удобнее в некоторых ситуациях, чем HashMap, где ключ надо определять явно. Set удобен для создания коллекции уникальных обьектов. Именно коллекции, поэтому там нет метода get. |
| Автор: GrayVulf 4.2.2010, 21:03 |
| Теперь все ясно. Спасибо Добавлено через 2 минуты и 34 секунды |