List는 최대 얼마나 많은 데이터를 저장할 수 있습니까?
Java의 java.util.List에 최대 얼마나 많은 데이터를 추가 할 수 있습니까?
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의 java.util.List에 최대 얼마나 많은 데이터를 추가 할 수 있습니까?
이것은 HashMap에 저장할 수있는 키 (객체) 수에 대한 이론적 제한 과 매우 유사 합니까?
의 문서 java.util.List
는 최대 요소 수에 대한 제한을 명시 적으로 문서화하지 않았습니다. 그러나 문서에 List.toArray
따르면 ...
이 목록의 모든 요소를 적절한 순서로 포함하는 배열을 반환합니다 (처음부터 마지막 요소까지). 다음과 같은 특정 방법을 충실하게 구현하는 데 어려움이 있습니다.
... 엄밀히 말해서 목록에 2 31 -1 = 2147483647 요소 가 2 개 이상있는 경우이 메서드 는 가능한 가장 큰 배열이므로이 메서드를 충실하게 구현할 수 없습니다 .
일부는 문서가 size()
...
이 목록의 요소 수를 반환합니다. 이 목록에 개 이상의
Integer.MAX_VALUE
요소 가 포함 된 경우를 반환합니다Integer.MAX_VALUE
.
... 상한이 없음을 나타내지 만이보기는 수많은 불일치를 초래합니다. 이 버그 보고서를 참조하십시오 .
배열 목록의 기본 크기가 있습니까?
참조 ArrayList
하는 경우 기본 크기는 0이라고 말하고 싶습니다. 그러나 기본 용량 (목록에서 메모리를 재할 당하지 않고 삽입 할 수있는 요소의 수)은 10입니다. 기본 생성자 의 문서를 참조하십시오 .
의 크기 제한은 ArrayList
있다 Integer.MAX_VALUE
가 일반 배열에 의해 뒷받침하기 때문이다.
java.util.List
인터페이스입니다. 목록에 저장할 수있는 데이터의 양은 사용하기로 선택한 목록의 특정 구현에 따라 다릅니다.
일반적으로 List 구현은 여러 항목을 보유 할 수 있습니다 (인덱싱 된 List를 사용하는 경우 Integer.MAX_VALUE
또는 로 제한 될 수 있음 Long.MAX_VALUE
). 메모리가 부족하지 않는 한 목록은 "전체"또는 아무것도되지 않습니다.
사용 가능한 메모리가 허용하는만큼. 힙을 제외하고는 크기 제한이 없습니다.
그러나 인터페이스는 int를 반환하는 size () 메서드를 정의합니다.
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 코드를 참조하십시오. u create List l = new 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 배열의 항목 번호 지정은 0부터 시작해야합니다. 이것은 우리가 Integer.MAX_VALUE + 1 항목에 액세스 할 수 있다고 생각합니다.
참조 URL : https://stackoverflow.com/questions/3767979/how-much-data-can-a-list-can-hold-at-the-maximum
'IT이야기' 카테고리의 다른 글
C # / WPF : ViewModel의 모든 속성에 대한 PropertyChanged? (0) | 2021.03.31 |
---|---|
자바. 문자열을 비교할 때 악센트 무시 (0) | 2021.03.31 |
PHP 오류 : 'Imagick'클래스를 찾을 수 없습니다. (0) | 2021.03.31 |
C ++ 코드에서 Haskell 호출 (0) | 2021.03.30 |
널 리터럴의 유형 (0) | 2021.03.30 |