(Java) List와 ArrayList
List와 ArrayList의 차이
문제를 풀다보니 일반적인 배열과 ArrayList의 차이점이 뭔지 궁금해졌다.
먼저 객체 생성하는 방법은 다음과 같다.
List
//int list 생성
int a[] = new int[n];
ArrayList
//int ArrayList 생성
ArrayList<Integer> a = new ArrayList<Integer>();
우선 가장 큰 차이점을 말한다면
List는 배열의 크기가 고정되어 있고
ArrayList는 배열의 크기가 가변적이라는 것이다.
나머지 특징들은 표로 보겠다.
List | ArrayList | |
---|---|---|
사이즈 | 초기화시 고정 | 사이즈가 가변적임 |
속도 | 초기화시 메모리가 할당되기 때문에 빠름 | 데이터 추가/삭제시 메모리를 재할당 하기 때문에 느림 |
크기 변경 | 불가 | 추가/삭제 가능 add(),remove() |
다차원 | int a[][][] = new int[3][3][3]; | 불가능 |
List | ArrayList | |
---|---|---|
장점 | - 인덱스를 통한 검색이 용이함 - 연속적이므로 메모리 관리가 편함 |
- 포인터를 가지고 있어 삽입/삭제에 용이 - 동적이므로 크기가 정해져있지 않음 - 메모리 재사용 편리 - 불연속적이라 메모리 관리 편리 |
단점 | - 크기가 고정이라 엘리멘트가 삭제되면, 삭제된 공간을 빈공간으로 남겨놔야함 => 메모리 낭비 - 정적이라 컴파일 이전에 메모리 할당을 해줘야함. - 컴파일 이후 메모리 변경 불가 |
-검색 기능이 좋지 못함 - 포인터를 통해 다음 데이터를 가르키므로 추가적인 메모리 공간 발생 |