IT이야기

List가 저장할 수 있는 최대 데이터

cyworld 2021. 3. 31. 21:17
반응형

List는 최대 얼마나 많은 데이터를 저장할 수 있습니까?


Java의 java.util.List에 최대 얼마나 많은 데이터를 추가 할 수 있습니까?

ArrayList의 기본 크기가 있습니까?


List구현 에 따라 다릅니다 . ints로 배열을 인덱싱하므로 ArrayListInteger.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

반응형