ArrayList size() Java

ArrayList<String> legend=new ArrayList<>(10);
 for (int i=0;i<legend.size();i++){ 

            legend.set(i,null); 

        }

Я с помощью конструктора указал кол-во элементов в массиве и хочу их обнулить. Но size() выдает только кол-во добавленных в массив элементов(т.е. в моем случае 0). А как взять это число, которое я указывал в конструкторе. Не хочу постоянно писать цифры, хочется метод какой-то.


Ответы (1 шт):

Автор решения: ulxanxv

Никак. У реализаций List в Java есть такое свойство как capacity - значение, которое указывает ваш зарезервированный объем памяти. Это не фактический размер коллекции, а лишь зарезервированное место в памяти.

Разработчики не предоставили методов для получения этого свойства.

Получить его можно только с помощью Reflections, чего естественно делать не рекомендую

public static void main(String[] args) throws Exception {
    final List<String> strings = 
            new ArrayList<>(10);
    
    System.out.println(getCapacity(strings)); // 10
}

public static int getCapacity(List list) throws Exception {
    final Field field =
            ArrayList.class.getDeclaredField("elementData");
    field.setAccessible(true);
    return ((Object[]) field.get(list)).length;
}
→ Ссылка