Java

Что создает List[] ?

ArrayList[] arr_list = new ArrayList[10];
Что такое arr_lis? Есть ли альтернативная запись для этой строки кода?
Объясните на пальцах, плиз (Начал изучать Java, по этому вопросу перелопатил кучу инфы про ковариантность типов, массивы и Generics в Java, но не до конца понимаю некоторые моменты)
создашь массив на 10 списков...
Сергей Шетько
Сергей Шетько
80 250
Лучший ответ
Сергей Шетько добавлю...
массив "под" 10 списков
сами списки при этом инициированы не будут...

т. е. вот после такого:
ArrayList< String >[ ] arr_list = new ArrayList< String >[10];
ты не сделаешь
arr_list[0].size();
вернее сказать, попробовать можешь, но получишь нуллпоинтер исключение, потому как под номером 0 лежит null
Сергей Шетько можно и дальше переливать воду из пустого в порожнее... потому как цель создания такого массива непонятна..
Павел Рыков >т. е. вот после такого:
>ArrayList< String >[ ] arr_list = new ArrayList< String >[10]; -это даже не скомпилируется

Мне интересно, почему ArrayList < String > [] arr_list = new ArrayList < String > [10]; - создать нельзя, т. к. создание массивов дженериков в java запрещено, а вот ArrayList[] arr_list = new ArrayList[10]; при этом компилируется нормально и с ним можно работать как с массивом. Почему?
>Что такое arr_lis
Название твоей переменной.

>Есть ли альтернативная запись для этой строки кода?
Разумеется, переменную можно обозвать как угодно.

>Объясните на пальцах, плиз

ArrayList - тип переменной
< String > - это дженерик (шаблон класса). Указывает некий тип классу ArrayList, зачем - нужно читать в манах этого ArrayList
[] - это будет массив
arr_list - идентификатор массива (имя переменной)
= new - выделение памяти под массив
ArrayList[10]; - размер выделяемой памяти, вызов конструктора класса.
Павел Рыков сорри, читайте мой коммент к вопросу
Павел Рыков получается, что arr_list это массив из состоящий ArrayList < String > элементов?
ArrayList это динамически расширяемый массив. То есть в этом объекте лежит массив, в случае нехватки места будет создаваться массив больше и информация переноситься в него. Дописывать в него можно ArrayList.add в конец массива, за так называемое амортизированное константное время, потому что массив пересоздаётся редко. ArrayList.get возвращает элемент по конкретному индексу за константное время. Поиск ArrayList.indexOf требует линейного времени, потому что для поиска идёт перебор всех элементов. Структура плохо работает с удалением remove и также требует линейного времени, потому что все элементы справа от удалённого объекта должны сдвигаться.

Должно быть:
ArrayList < String > [] arr_list = new ArrayList< >(); В этом случае будет задан стандартный размер массива типа String.
ArrayList < String > [] arr_list = new ArrayList< >(10); Тогда начальный размер массива будет 10. И с последующим увеличением в случае нехватки места.
Baha Hal
Baha Hal
50 817
Павел Рыков ниочем, да и "Должно быть: " не работает. У меня создается именно массив, класс объекта [Ljava.util.ArrayList