CS
배열(Array)과 리스트(List)
Bastian바스티언
2024. 1. 16. 17:10
배열은 특정 타입의 연속된 메모리를 정적으로 선언하여 관리할 수 있다.
배열은 생성 시 메모리 공간의 크기가 고정되어 있으며 변경이 어렵다
리스트는 특정 타입의 연속된 메모리를 동적으로 관리하며 크기가 부족할 경우 2배로 할당하고,
메모리가 없다면 새로운 메모리 공간을 기본 용량만큼 만든다.
리스트는 동적 크기의 배열로 요소를 추가하거나 제거할 수 있는 유동성을 가지고 있다.
하지만 리스트도 내부적으로는 배열로 이루어져 있기 때문에 가능하다면 배열 크기를 먼저 정해주는 것이 좋고,
배열을 옮김으로써 생기는 부하를 방지할 수 있다.
이렇게만 보면 리스트가 성능적으로 우월하다고 느껴 배열보다는 리스트만 사용하게 될 것 같지만,
리스트를 무분별하게 사용하는 것도 지양해야 한다.
1. 메모리 사용량 증가
리스트는 동적으로 크기를 조정하기 때문에 배열보다는 많은 양의 메모리를 사용한다.
2. 데이터 접근 시간 증가
리스트는 인덱스를 이용하여 데이터 접근이 배열보다 느리다.
즉, 특정 인덱스의 데이터를 찾기 위해서는 연결된 노드를 모두 순회해야 한다.
3. 코드 복잡도 증가
리스트는 동적으로 크기 조정이 가능하기 때문에 데이터의 변경이 간편하지만 오히려 코드의 복잡도를 증가시킬 수 있다.
따라서 코드의 가독성과 유지보수성이 저하될 수 있다.
이러한 이유들로 인해 리스트를 무분별하게 사용하는 것은 지양해야 한다.
데이터의 구조를 선택할 때에는, 데이터의 크기와 사용 목적을 고려하여 적절한 것을 선택해야 한다.