![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: нет Всего: 55 |
Как осуществить субж?
Например
Что мне нужно: Возможность выдернуть юзера по ИД и по Сессии, будут какие предложения? А то я уже совсем запутался... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Используй MultiKey из Jakarta Commons Collections.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Гм, а сделать свой Key объект, который состоит из инта и стринга?
Определив hashcode, equals() -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
И по сессии И по айдишнику - тогда можно просто сделать свой объектик, как и сказал chief39, а вот если ИЛИ по сессии ИЛИ по айдишнику, тогда не знаю, видимо, ка сказал LSD ... Тоже гляну на это мультикей
ПыСЫ в любом случае кто мешает при добавлении пихать в два хэшмапа, а при поиске пользоваться нужным Это сообщение отредактировал(а) y3u - 12.2.2007, 17:16 -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: нет Всего: 55 |
y3u,
Нужно ИЛИ по сессии, ИЛИ по айди. Multikey не подходит, т.к там сразу по обоим критериям. Насчет двух хешмапов думал, но подумал, что есть более правильное решение. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Так И или ИЛИ? Если ИЛИ, то можно и одной HashMap обойтись.
Но будет геморой с удалением значений. Например мы хотим удалить запись по ID, но нужно также будет найти его сессию, чтобы удалить и ее. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
а вот и нельзя Это сообщение отредактировал(а) y3u - 13.2.2007, 13:20 -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
И какое это имеет отношение, к тому что я сказал? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
прямое
скажем, в 1.4 SDK посмотри как работает get(Object key) у HashMap... у тебя медленный код, т.к. хеши id и value могут быть одинаковыми, а реально объекты, находящиеся по этим ключам - разные вобщем, ладно... это оффтоп Это сообщение отредактировал(а) y3u - 13.2.2007, 15:22 -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Вообще то, я прелагал искать value или по id, или по name И хеш код value в данном случае вообще неважен. Добавлено @ 16:04 Я знаю как работает HashMap. Совпадение хешей маловероятно, но не смертельно, в реальных задачах они все равно совпадают. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 6 Всего: 360 |
Почему они вдруг разные? И там и там указатель на один и тот же обьект. Пишешь что-то вроде:
Добавлено @ 16:06
"Медленность" зависит от соотношения размера таблицы к количеству элементов в ней. Тут Ява сама подберёт оптимальную величину. |
||||
|
|||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 5 Всего: 13 |
да блин, я описАлся, я имел в виду, конечно, name, а не value... Я вообще только о ключх говорю и все
Это сообщение отредактировал(а) y3u - 13.2.2007, 16:23 -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 6 Всего: 360 |
Не больше, чем совпадение двух разных name. Не верно. С увеличением количества пользователей наша таблица будет расширятся и уменьшать таким образом вероятность совпадений. (Размер кстати можно и изначально побольше задать) Для практически равномерного распределения размер таблицы должен быть примерно N+20% где N - количество элементов хранимых таблице. Что это за объекты - не важно Нет, но книги разных авторов за разное время спокойно стоят на одной полке. И name и id - то и другое для хэштаблицы - объекты с калькулируемым идентификатором. |
|||
|
||||
| Opik |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: нет Всего: 55 |
Написал класс, по совету chief39,
Добавляю в HashMap так:
Как мне бонально проверить на наличие сессии?
не помогает
аналогично Это сообщение отредактировал(а) Opik - 27.2.2007, 23:28 |
||||||||
|
|||||||||
| nornad |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
При такой реализации DoubleKey - никак. Точнее, никак за счёт containsKey. Простой перебор множества ключей сработает, но это простой перебор. В качестве заплатки сработает, если будешь пихать в мапу "пустышку" именно для возможности поиска по сессии:
Искать тогда так:
null вместо идентификатора пихать нельзя, т.к. будет падать на NullPointer. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||
|
|||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: нет Всего: 55 |
nornad,
Если делать put - 0, тогда смысл во всей это байде отпадает совсем. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
А, никак Единственный нормальный выход в данной ситуации - это 2 Map-а. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
А ты не думал, что ты хочешь слишком уж много? Тебе требуется, чтобы мапа различала ключи с разными id и session при вставке, и НЕ различала их по id при поиске ключа в мапе. Так не бывает. Это сродни тому, чтобы определить, есть ли в мапе по интам чётные ключи. Надо - перебери мапу или добавляй свои "пустышки". Не нужна такая "байда" - не ломай голову. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Вернее даже одним можно обойтись -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: нет Всего: 55 |
LSD,
Коим образом? |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Да очень просто:
Единственная проблема это метод remove() но тут уж ничего не поделаешь, кроме как завести еще один Map для установки соответствия id и session. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: нет Всего: 55 |
LSD,
В этом случае все равно лучше уже 2 мапа. Впрочем остановился на 2-ух, пофиг |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Значит считаем вопрос решенным?
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: нет Всего: 55 |
Угу, уже пометил
|
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Не совсем верно, потому что если у тебя будет два одинаковых идентификатора в разных сессиях или два разных идентификатора для одной сессии, то в мапе произойдёт наложение. В общем, мапа будет хранить не совсем то, что хочется. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Вообще-то идентификатор должен быть уникальным, иначе никакого поиска по нему не может быть. А два одинаковых идентификатора для одной и той же сессии, это хотя и очень странное решение, но работать будет. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Видимо, ты этого не заметил. ;) -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Видимо ты не заметил Если ид или сессия не уникальны, то как ты предлагашь по ним искать? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Да, действительно не заметил этого. В памяти держалась лишь первоначальная задача - уникальность по двойному ключу, а в мапе надо было проверить, нет ли ключей с конкретной сессией.
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |