Как установить arrayList размер как пустой указатель?

String a []= {null,null,null,null,null};

//add array to arraylist
ArrayList<Object> choice = new ArrayList<Object>(Arrays.asList(a)); 

System.out.println(choice.size());

Почему размер arrayList choice 5, когда все элементы были установлены на null

5
задан Jessy 1 April 2010 в 01:52
поделиться

4 ответа

Потому что в списке массивов все еще есть 5 элементов. Они могут быть нулевыми, но они все еще присутствуют в списке.

Вы можете очистить ArrayList, вызвав choice.clear();

2
ответ дан 14 December 2019 в 04:34
поделиться

Я думаю, что вас смущает то, что вы думаете об ArrayList как об ArrayList объектов, а не как об ArrayList ссылок на объекты.

ArrayList of Object представляет собой доступный по индексу список ссылок на объекты.

Допустимо, чтобы такая ссылка не ссылалась на реальный объект, а была "null".

Следовательно, у вас есть пять "слотов" ссылок, каждый из которых имеет значение null.

Это не то же самое, что серия из четырех нулей или нулей.

Посмотрите на ваш исходный и примитивный массив строк - его длина равна пяти, а не нулю.

Или еще проще: когда у вас есть класс с полем типа Object, оно все равно занимает место, независимо от того, ссылается ли оно на что-то или является нулем. В противном случае вы не смогли бы инстанцировать класс и не нуждались бы в перераспределении пространства, когда вы действительно присвоили что-то полю.

4
ответ дан 14 December 2019 в 04:34
поделиться

Это связано с тем, что ArrayList не равен null, он содержит пять объектов (все они равны null), в любом случае ArrayList никогда не будет иметь нулевой размер, по крайней мере, размер равен 0 (ноль), и если ArrayList не инициализирован (равен null) и вы попытаетесь получить доступ к функции size(), он выведет исключение NullPointerException. Я надеюсь, что эта информация будет полезна для вас, и извините за мой плохой английский :(

1
ответ дан 14 December 2019 в 04:34
поделиться

Из документации Javadocs для ArrayList:

Реализация интерфейса списка с изменяемым размером массива. Реализует все необязательные операции со списком и разрешает все элементы, включая null.

ArrayLists может содержать нулевые элементы, поэтому размер равен пяти. Имейте в виду, что если вы просто объявите новый ArrayList (5) , он будет иметь начальную емкость 5, но size () будет равен 0.

{{ 1}}
1
ответ дан 14 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: