|
Модераторы: LSD, AntonSaburov |
|
Валерия |
|
||||
Опытный Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
Как правильно написать такое? Я знаю что есть вариант написать вот так:
Но не прикольно каждый раз создавать новый HashMap для каждого значения Можно ли как-то это дело простым образом инициализировать? |
||||
|
|||||
sQu1rr |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 1 Всего: 13 |
Есть как минимум три способа для автоматической инициализации мапа (не совсем точно отвечает на ваш вопрос, но доработать можно)
1. Вынесите в функцию и которая делает put и возвращает объект
2. Анонимный класс, но по моему слишком неоправданно
3. guava
|
||||||
|
|||||||
Stolzen |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: 23 Всего: 48 |
Можно использовать Table из вышеупомянутой гуавы |
|||
|
||||
Валерия |
|
|||
Опытный Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
Всем спасибо
Но мне нужно стандартными средствами Анонимный класс отлично подошел Это сообщение отредактировал(а) Валерия - 27.11.2014, 02:13 |
|||
|
||||
sQu1rr |
|
|||
Опытный Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 1 Всего: 13 |
||||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
Чем это? -------------------- 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. |
|||
|
||||
sQu1rr |
|
|||
Опытный Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 1 Всего: 13 |
Может тут ключевое слово. Создается внутренний анонимный класс, который держит указатель на внешний (Hashmap) класс. То есть еще один уровень индирекции, и кушается больше памяти, нет? Если таких объектов наклепать изрядно, то мусороуборке придется больше памяти очищать |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
Количество объектов подлежащих сборке это не изменит. Да и если бы изменило, то значительного влияния на производительность это не окажет. -------------------- 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. |
|||
|
||||
sQu1rr |
|
|||
Опытный Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 1 Всего: 13 |
Кол-во какраз в 2 раза больше будет. Внутренний класс + внешний, вместо одного внешнего. Да перестарался со словом сильно, извиняюсь |
|||
|
||||
Валерия |
|
|||
Опытный Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: нет Всего: 8 |
Просто guava это не стандартные средства, а мне нужно сделать максимально стандартными средствами
Я просто сейчас учу Java и пишу на ней все те вещи которые мне нужны были в других ЯП, и вот ассоциативные массивы сделаны очень не удобно, по сравнению с php или perl, столько лишнего всего... |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
Не понял откуда там 2 объекта. Вариант 1: 1 - объект HashMap Вариант 2 1 - объект MyClass$1 extends 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. |
|||
|
||||
sQu1rr |
|
|||
Опытный Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 1 Всего: 13 |
А может я и туплю. нужно погуглить
Это сообщение отредактировал(а) sQu1rr - 28.11.2014, 14:36 |
|||
|
||||
sQu1rr |
|
|||
Опытный Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 1 Всего: 13 |
Вообщем. Нормализую ка я свою логику и попробую объяснится нормально, что я имел ввиду
Если вы делаете анонимный класс, он, и правда будет просто extend от родительского, НО будет содержать в себе ссылку на внешний класс (то есть тот класс в котором вы этот анонимный класс и создаете), а это значит, что этот внешний класс будет жить пока не умрет анонимный класс.
Вернется анонимный экземпляр OtherClass который будет содержать ссылку на someClass, и если someClass выпадет из области видимости раньше чем anonOtherClass, то он не будет удалятся мусороуборкой, пока anonOtherClass не удалится. Вот. А про кол-во объектов я имел "за раз". Ну вы поняли. Я очень хорошо в объяснениях я знаю |
|||
|
||||
LSD |
|
||||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15709 Регистрация: 24.3.2004 Репутация: 209 Всего: 537 |
Если анонимный внутренний класс создается в статическом контексте, то он сам будет статическим и никаких ссылок на родительский объект содержать не будет.
(хотя нас и пугают, что могут это убрать). -------------------- 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. |
||||
|
|||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |