2012-11-01 3 views
1

링크 된 목록 이외에 Java에 제한되지 않은 목록이 있습니까? BLOB 개체를 목록에 저장해야합니다. 현재 arrayList를 사용하고 있지만 arraylist가 목록의 크기가 커지면 저장할 수 없을 수도 있습니다 (최대 용량에 도달 할 수 있음). 링크드리스트를 사용하려고 생각했지만 효율적으로 보이지 않습니다.자바의 무제한 목록

+2

ArrayList의 문제점은 무엇입니까? 크기 제한이 있다는 내용은 [해당 설명서] (http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html)에서 볼 수 없습니다. (목록의 "용량"에 대해 우려하고 있다면 새로운 요소가 추가 될 때 자동으로 커집니다.) – Wyzard

+2

2^31 + 1 개 이상의 객체가 없으면 ArrayList 또는 LinkedList가 좋을 것입니다. 당신은 많은 객체들을 가지고 극도의 메모리 부하를 경험할 것입니다. – Vulcan

+0

이 비슷한 대답을 여기서 참조 할 수 있습니다. http://stackoverflow.com/questions/3767979/how-many-data-a-list-can-hold-at-the-maximum – user1500049

답변

6

ArrayList에는 크기 제한이 없습니다. 추가하는 요소에 맞게 확장해야합니다.

ArrayList은 기술적으로 2^31-1 값 (약 20 억 개 요소)으로 제한 될 수 있지만 먼저 RAM이 부족합니다.

+0

* "...하지만 RAM이 부족합니다."* - 또는 당신의 응용 프로그램은 괴물 목록에'O (N)'연산을하는 처리를 멈추게 할 것입니다 :-) –

+0

사실입니다 ... 그러나'LinkedList'보다 더 빠를 것입니다. –

+0

나는 당신의 의견에 동의하지 않습니다. 나는 그것을 강화하고 있습니다 ... 괴물 목록이 단순히 작동하지 않는 또 다른 이유를 지적함으로써. –

0

ArrayList의리스트의 사이즈가 커지면 (크기 제한의 사촌) 저장할 수 없을 수도있다.

어떤 크기 제한?

List<Blob> blobs = new ArrayList<Blob>(); 

에만 yshavit 올바르게, 아래의 인덱스에 대한 최대 정수 값을 지적대로, JVM에 할당하거나 수있는 메모리의 양에 의해 제한된다.

+1

글쎄, 기술적으로 배열이 가질 수있는 것보다 크기 때문에 'Integer.MAX_VALUE' (2^31-1)로 제한됩니다. 그러나 그것은 실제로 당신의 제한 요소가 될 수 없습니다. – yshavit

0

Java에서 수십 가지 Collection 구현이 있다는 것을 알아 두십시오. 필요에 정확하게 따라야합니다. 예를 들어 ArrayList에는 유효한 크기 제한이 없으므로 최대 크기가되기 전에 OutOfMemoryError가 발생합니다. 결정하기 전에 체크 아웃 Collections page.