프로그래밍/공부
배열과 리스트의 차이
따봉도치
2020. 2. 25. 15:41
배열과 리스트
: 동일한 특성의 데이터들의 집합을 가리키는 자료구조
둘의 가장 큰 차이는 구조적 차이라고 생각한다.
배열의 경우 연속된 메모리 공간에 할당되고, 리스트의 경우 메모리가 연속적인 공간에 있지 않고 다음 노드를 가리키는 주소값을 가지고 있다.
이런 차이에서 오는 각각의 장단점을 알아보자.
*배열
(1)장점
- 구현이 쉬움
- 인덱스가 있어 조회에서 빠른 성능을 보여줌
- 연속된 메모리 공간에 할당되어 순차 접근에도 빠름
- 참조를 위한 추가 메모리 할당이 필요 없음
(2)단점
- 삽입/삭제 시 뒤에 요소들을 이동해야 해서 비효율적
- 선언 시 지정한 크기 변경 불가
- 메모리 재사용 불가 (초기 사이즈만큼 할당이 되고, 데이터가 없더라도 메모리를 차지하고 있음)
*리스트
(1)장점
- 삽입/삭제 시 전후 노드의 참조 관계만 수정하면 되기 때문에 효율적
- 크기가 고정적이지 않음
- 메모리 재사용 가능 (삭제 시 해당 노드의 참조가 사라져 GC에 의해 가용 메모리로 전환)
(2)단점
- 구현이 상대적으로 복잡
- 검색이 비효율적 (처음부터 순차적으로 검색해야 함)
- 참조를 위한 메모리가 필요
*결론
- 저장할 데이터의 개수가 정해져 있고 / 삽입, 삭제 작업이 적고 / 특정 위치의 데이터를 조회하는 작업이 많다면 배열
- 저장할 데이터의 개수가 미정이고 / 삽입, 삭제 작업이 많고 / 특정 위치 데이터를 조회하는 경우가 별로 없다면 리스트