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;
}