Array
- 같은 타입의 값만 관리
- int 배열 : int 타입의 값만 관리
- String 배열 : 문자열만 관리
- 길이를 늘리거나 줄일 수 없음
- 선언과 동시에 길이가 결정됨
- 한번 결정된 배열의 길이는 늘이거나 줄일 수 없음
- 논리적인 저장 순서 == 물리적인 저장 순서
- 연속된 메모리 공간을 차지함
- index를 통해 접근 가능
장점
- 검색에 용이함
- index를 통한 접근이 가능하기 때문
- 관리에 용이함
- 연속된 메모리 공간을 차지하기 때문
단점
- 크기가 고정되기 때문에 데이터가 삭제되는 경우에 빈 공간이 생김 -> 메모리 낭비
List
- 순서가 있는 데이터들의 집합
- 불연속적인 메모리 공간에 포인터를 통해 각 데이터들이 연결됨
- 크기가 동적으로 정해짐
Array vs. List
Array | List |
크기가 정해져 있음 | 크기가 변함 (동적) |
프로그래밍을 할 때 저장할 값의 크기가 명확하지 않은 경우, 즉 자료형의 개수가 계속 변하는 상황일 때 리스트를 사용한다.
Vector
- 배열의 한계(길이 제한)를 극복
- 삽입되는 객체의 수가 늘어나면 자동으로 크기가 조절됨 -> 동적이다.
- 객체 삽입
- 맨 뒤에 삽입 : 공간이 모자라면 자동 늘림
- 중간에 삽입 : 뒤에 존재하던 객체들이 한칸씩 뒤로 이동
- 객체 삭제 : 삭제 후 한칸씩 앞으로 이동