Сколько данных можно добавить в java.util.List в Java максимум?
Есть ли размер по умолчанию для ArrayList?
Сколько данных можно добавить в java.util.List в Java максимум?
Есть ли размер по умолчанию для ArrayList?
Это зависит от реализации List
. Поскольку вы индексируете массивы с int
s, ArrayList
не может содержать больше элементов Integer.MAX_VALUE
. A LinkedList
не ограничивается одним и тем же способом и может содержать любое количество элементов.
Это будет зависеть от реализации, но предел не определяется интерфейсом List
.
Однако интерфейс определяет метод size()
, который возвращает int
.
Возвращает количество элементов в этом списке. Если этот список содержит больше элементов
Integer.MAX_VALUE
, возвращаетInteger.MAX_VALUE
.
Итак, нет ограничений, но после того, как вы достигнете Integer.MAX_VALUE
, поведение списка немного изменится
ArrayList
(который помечен тегами) поддерживается массивом и ограничен размером массива - т.е. Integer.MAX_VALUE
Сколько данных можно добавить в java.util.List в Java максимум?
Это очень похоже на Теоретический предел для количества ключей (объектов), которые могут быть сохранены в HashMap?
Документация java.util.List
явно не документирует ограничение на максимальное количество элементов. Однако в документации List.toArray
указано, что...
Возвращает массив, содержащий all элементов в этом списке в правильной последовательности (от первого до последнего элемента); будут иметь проблемы с реализацией определенных методов, например,
... так строго говоря, было бы невозможно верно реализовать этот метод, если в списке было больше 2 31 -1 = 2147483647 элементов, так как это самый большой возможный массив.
Некоторые утверждают, что документация size()
...
Возвращает количество элементов в этом списке. Если этот список содержит больше элементов
Integer.MAX_VALUE
, возвращаетInteger.MAX_VALUE
.
... указывает, что нет верхнего предела, но это мнение приводит к многочисленным несоответствиям. См. этот отчет об ошибках.
Есть ли по умолчанию размер списка массивов?
Если вы имеете в виду ArrayList
, то я бы сказал, что размер по умолчанию равен 0. Однако емкость по умолчанию (количество элементов, которые вы можете вставить, не заставляя список перераспределять память) равно 10. См. документация конструктор по умолчанию.
Предел размера ArrayList
равен Integer.MAX_VALUE
, поскольку он поддерживается обычным массивом.
java.util.List
- это интерфейс. Сколько данных может хранить список, зависит от конкретной реализации списка, который вы выбрали для использования.
Как правило, реализация List может содержать любое количество элементов (если вы используете индексированный список, он может быть ограничен Integer.MAX_VALUE
или Long.MAX_VALUE
). Пока вы не исчерпали память, List не станет "полным" или что-то еще.
Насколько позволяет доступная память. Там нет ограничения по размеру, кроме кучи.
Однако интерфейс определяет метод size(), который возвращает int.
Returns the number of elements in this list. If this list contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.
Итак, нет ограничений, но после того, как вы достигнете Integer.MAX_VALUE, поведение списка немного изменится
ArrayList (который помечен тегом) поддерживается массивом и ограничен размером массива - то есть Integer.MAX_VALUE
см. код ниже по умолчанию для arraylist, когда вы создаете Список l = новый ArrayList();
public class ArrayList<E> extends AbstractList<E> implements List<E>,
Cloneable, Serializable, RandomAccess {
private static final long serialVersionUID = 8683452581122892189L;
private transient int firstIndex;
private transient int lastIndex;
private transient E[] array;
/**
* Constructs a new instance of {@code ArrayList} with ten capacity.
*/
public ArrayList() {
this(10);
}
Нумерация элементов в массиве java должна начинаться с нуля. Это я думал, что мы можем иметь доступ к Integer.MAX_VALUE + 1 элементам.