![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
Здравствуйте.
Существуют ли в java ассоциативные массивы? дело в том, что в голове - каша: Array, ArraList, Vector... и еще бог знает какие объекты... сегодня нашел реализацию ассоциативных массивов на java за счет удвоения количества элементов списка. Нужен ли такой дополнительный код? есть-ли стандартная реализация? чем отличаются вышеперечисленные объекты? -------------------- ![]() ![]() |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
||||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Да - интерфейс Map (одна из реализаций - HashMap). -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
На другие вопросы ответте пожалуйста тоже!
-------------------- ![]() ![]() |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
GZep, что вы понимаете под ассоциативным массивом?
я понимаю это как nornad, то есть: "ассоциативный массив" - это список, в котором хранятся пары ключ-значение. По ключу можно получить определенное значение. Тогда: -------------------- Lost.... |
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Map - интерфейс, который определяет ассоциативный массив, известные стандартные реализации HashMap (беспорядочное хранение данных), Hashtable (хранение данных в определенном порядке). всё.
За более точной информацией, надо обращаться к истокам |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
По мотивам жавадока: 1. Array - java.lang.reflect.Array, т.е. объект, с которым идёт работа, когда ты создаёшь "обычный" массив. Например:
2. ArrayList и Vector реализуют AbstractList. ArrayList не синхронизирован и могут быть проблемы при работе с одним массивом из разных потоков. Зато работает, вроде, быстрее (тут лучше пусть скажут те, кто использовал вектор). -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| XEugene |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 1.1.2008 Репутация: нет Всего: 2 |
Но самое интересное во всем этом то что Map - не коллекция! Когда я впервые об этом узнал, то был очень озадачен.
|
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Ну а как, например, добавлять в мапу обычным add(E e) интерфейса Collection? Ключ сама коллекция изобретать должна? Не шибко подходит этот интерфейс к мапе, вот она и не коллекция.
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| GZep |
|
||||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
nornad, спасибо большое, за java.util.Map - вещь просто супер!
Только вот не получается вытащить влощенные значения... Определяю так:
а вот вытащить не выходит. (со структурой все норм, посмотрел через toString):
все генерируют исключения -------------------- ![]() ![]() |
||||
|
|||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Вообще обычно у всех работает так:
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Kangaroo |
|
||||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
А что ты пытаешься сделать это строкой
Может так?:
А если не поможет - выложи полный код. Чтобы можно было запустить и увидеть ошибки.. -------------------- Lost.... |
||||
|
|||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
извините, заглючил по полной
Это сообщение отредактировал(а) nornad - 9.1.2008, 21:32 -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
да не, это я тут для примера написал и то неправильно... вот сейчас покажу структуру: myMap = { 0 = {"name" = "bla-bla", "bla-bla" = "bla-bla", "..." = "...."}, 1 = {"name" = "bla-fvdsv", "bvds" = "bvds-bla", "..." = "...."}, и т.д. } как мне вывести myMap[число][ээ..тут например будет "name"] ? -------------------- ![]() ![]() |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
А зачем тебе через число? Если хочешь просто вывести все значения по ключам - возьми у мапы массив Map.Entry и форичем его, форичем.
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
ээ... а на примере не покажешь? а то, что эти значения - массивы, это не помешает? -------------------- ![]() ![]() |
|||
|
||||
| nornad |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Если знаешь ключи, то выводи так:
Если не знаешь и хочешь вывести все:
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||
|
|||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
nornad,
вы, кажется, не поняли... у меня в одном массиве, в каждом ключе этого массива определен другой массив. То есть надо добраться: я думал надо так, но не работает: -------------------- ![]() ![]() |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Верхняя мапа у тебя что хранит? Object? Тогда надо кастить.
Вот тебе ещё пример:
Добавлено через 2 минуты и 50 секунд блин, скобку закрывающую забыл Это сообщение отредактировал(а) nornad - 10.1.2008, 20:29 -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
ну, ключи - числа, а значения Map. А у этого Map ключи и значения - строки. nornad, а почему этот пример работает, а мой нет? ответ кроется в Object<..> - это такое <>? Если честно, не знаю, что это, но из-за них работать начинает... -------------------- ![]() ![]() |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
<> - это шаблоны в Java. Появились в 1.5. Object<..> - это ты очень прикольно у себя пишешь Почитай про шаблоны, тоже оценишь. А не работало у тебя потому, что из первой мапы ты доставал неизвестный объект, а не мапу (JVM не в курсе, какой там должен быть тип). То есть, после вытаскивания надо было приводить к мапе второго типа. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
хм.... у меня не работает
Добавлено через 1 минуту и 17 секунд
а чем ей не нравится тогда вот это? -------------------- ![]() ![]() |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Тем, что ты привёл к нешаблонизированной мапе. Приведи к Map<String, String> и будет счастье. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
nornad, переделай, плиз этот пример. У меня не работает.
Это сообщение отредактировал(а) GZep - 10.1.2008, 22:18 -------------------- ![]() ![]() |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
В следующий раз давай нормальный пример, а не псевдокод неизвестно на чём (ибо это даже не Java - это сплошной поток сознания). -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| GZep |
|
||||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
nornad, ну.... елки-палки!!!
вот решение:
сам себе отвечаю: не нравится это тем, что написано неверно!!! вот как надо:
вот и все... -------------------- ![]() ![]() |
||||
|
|||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
На 1.5+ лучше с "палками" Так оно куда нагляднее и меньше явных преобразований надо делать. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
И главное - компилятор проверяет, правильные ли вещи мы в коллекцию пихаем. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: нет Всего: 32 |
получается: явное преобразование VS. явное указание(определение) у меня во внутренней коллекции значения есть и не String... это я так упростил для того чтобы на простом примере понять, что надо сделать чтобы заработало. З.Ы. nornad, примите мои извинения, что из-за моих кривых рук кучу Вашего времени убил -------------------- ![]() ![]() |
|||
|
||||
![]()
|
| Правила форума "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. |