ArrayList는 기본 초기 용량이 10 입니다.
빈 ArrayList를 생성 하면 내부적으로 용량은 10 으로 설정됩니다.
또한 자동 크기 증가 시점은 현재 배열의 크기가 가득 차면 새로운 배열을 할당합니다 크기는 이전 용량의 1.5배로 크기를 증가 시킵니다.
크기 증가 예시 입니다.
- 초기 용량: 10
- 요소 10개가 모두 채워지면, 용량이 1.5배 증가(10 + 5 = 15)
- 요소 15개가 채워지면, 용량이 1.5배 증가(15 + 7 = 22)
- 요소 22개가 채워지면, 용량이 1.5배 증가(22 + 11 = 33)
이렇게 빈번하게 크기가 할당되면 성능에 좋지 않아서 여러가지 방안이 있지만 다음과 같다.
ArrayList 크기 증가 관리 방법
자동 증가를 피하거나 성능을 최적화하기 위해 크기를 미리 조정할 수 있습니다.
- 초기 용량 설정
대량의 데이터를 추가할 것을 예상할 수 있다면 ArrayList 생성 시 초기 용량을 설정해 성능을 최적화할 수 있습니다.
ArrayList<Integer> numbers = new ArrayList<>(1000); // 초기 용량을 1000으로 설정
- ensureCapacity() 사용
numbers.ensureCapacity(500); // 최소 용량을 500으로 설정
- trimToSize() 사용
데이터 추가가 완료되었을 때 ArrayList가 내부 배열의 용량을 실제 크기에 맞게 줄여 메모리를 절약하도록 할 수 있습니다.
numbers.trimToSize();
추가적으로 궁금해서 자료를 찾아봤습니다만 만약에 1000으로 초기 크기를 해두고 요소 추가가 2개만 될떈 이렇게 처리 해야됩니다.
ArrayList<String> list = new ArrayList<>(1000);
// 요소 추가
list.add("Item1");
// ...
list.add("Item10");
// 요소 제거
list.clear(); // 모든 요소 제거
// 용량을 줄입니다.
list.trimToSize(); // 현재 요소 수에 맞게 배열 크기 조정'Java' 카테고리의 다른 글
| 공변과 반공변에 대해 (0) | 2024.11.05 |
|---|---|
| JavaBean과 POJO (0) | 2024.11.04 |
| 부동소수점에서 엡실론 (1) | 2024.10.31 |
| 오토 박싱 & 오토 언박싱 (1) | 2024.10.30 |
| 자바_instanceof (객체타입 확인) (1) | 2024.10.30 |