Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > массив с неизвестной длинной в java |
Автор: NLspieler 22.2.2010, 03:21 |
Какого было моё разочарования, когда я узнал, что массивы в java мало того, что имеют только нумерованные 0...n ключи, так еще и имеют фиксированную длину n. Про то, что они не могут быть многомерными, я вообще молчу. Сразу зафиксировать всю необходимую для исполнения программы память - это конечно же очень хорошо и экономно. Но в очень большом количестве задач, совершенно неизвестно, сколько элементов будет у нашего бедующего массива. Например, представим такую задачу, пользователь вводит в консоле имена и возраста, после каждого ввода имени, программа спрашивает, хочет ли пользователь ввести еще одно имя, или завершить ввод, и вывести все введенные имена. Двухмерный ассоциативный массив, с неопределенной длинной подошел бы для этого как нельзя лучше. Хотя нет, можно обойтись и двумя массивами. String [] name = new String [неизвестная длинна] ; int [] how_old = new int [неизвестная длинна] ; Но как сделать массив с неопределенной длинной так до сих пор для меня остаётся загадкой. Следующий вопрос, можно ли в java-массив засунуть дерево? В таких языках как javascript или php это не составляет никакого труда. В JAVе же никаких очевидных способов мне пока не видно. Как java-программисты справляются с такими серьёзными проблемами? |
Автор: Vasay 22.2.2010, 03:43 | ||||||
Могут.
На то они и массивы. Кроме массивов в Java есть -HashMap -TreeMap -Collections |
Автор: Exai1e 22.2.2010, 09:24 | ||
использовать List<T> |
Автор: batigoal 22.2.2010, 11:48 |
NLspieler, коллекции в Java представлены достаточно обширно, как в стандартном API, так и в сторонних либах. Кури мануал: http://java.sun.com/docs/books/tutorial/collections/index.html |
Автор: Fieral 22.2.2010, 18:11 |
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Vector.html |
Автор: dorogoyIV 22.2.2010, 21:41 |
![]() ![]() джава написана на ошибках первых языков программирования, там все путем... мануал совершенно понятный (по крайней мере для меня) мне вот щас приходится на бейсике писать, так я в шоке от бейсика после джавы ![]() |
Автор: NLspieler 23.2.2010, 17:54 |
Спасибо всем за помощь. Я уж и правда думал, что все это в java нереализуемо, или реализуемо, но с массой сложностей и переподвыпертов, оказалось, что я не прав и все это совсем не сложно и давно уже предусмотренно |
Автор: Temdegon 5.3.2010, 02:08 |
Все непонятки из-за того, что в php принято называть массивом то, что правильнее было бы назвать коллекцией =) Кста, может кто-то натыкался на какие-нить статьи про то, как в php устроен array и строки? К примеру, является ли строка в PHP изменяемой? Как сильно реализация отличается от джавовской String? Ну а про "чудо-массив", в который можно пихать все что хочешь, тоже хотелось бы узнать всякие подробности. Должна же быть какая-то плата за его универсальность. Сколько не гуглил и спрашивал у знакомых программистов, все только плечами пожимают. А в исходниках рыться, что бы с этим разобраться, как то не очень хочется... |
Автор: MaxPayneC 5.3.2010, 02:55 | ||
В
можно пихать все что хочешь, кроме простых типов ![]() |
Автор: batigoal 5.3.2010, 08:29 | ||
А зачем? |
Автор: _Y_ 5.3.2010, 09:13 | ||
Как зачем? Ну, например, создать мусорный ящик (Recycle Bin). В игрушке какой-нибудь, или еще где. Кстати, раз уж говорим о вещах простых, следует напомнить, что именно для сабжа и существует ArrayList |
Автор: serger 5.3.2010, 10:55 | ||||
Просто уровень разработчиков не торт.. ![]() |
Автор: batigoal 5.3.2010, 11:38 | ||
Пример хороший, согласен с ним. Но в реальной разработке, ну вот ни разу не было у меня необходимости создавать универсальный массив, практически всегда его можно параметризовать. Имхо, в 90% случаев использование коллекций с непараметризованным типом в прикладном программировании есть недочет дизайна. |
Автор: _Y_ 5.3.2010, 11:44 | ||
Абсолюто согласен. Так что, начинающие, обратите внимание: использование коллекций с непараметризованным типом есть недочет |
Автор: ravivc 28.9.2020, 17:27 |
Думаю этот материал о массивах https://javarush.ru/groups/posts/massivy-java даст ответы на многие вопросы) |