Array 단점
1) Removing or Adding Elements
- 중간의 특정 요소를 삭제해야 하는 경우를 가정했을 때, 중간의 요소가 삭제 되는 경우, 삭제된 요소로 부터 뒤에 있는 모든 요소들을 앞으로 한칸씩 이동시켜줘야한다.
- 이 과정은 다른 자료 구조에 비해 느릴 수 있다.
- 요소를 삭제하는 과정이 코드 상에서는 한 줄 이지만 실제 메모리 상에서 이루어지는 작업은 훨씬 커진다.
- 중간에 요소가 추가 되는 경우도 마찬가지
- Array는 정보가 자주 삭제 되거나 추가되는 데이터를 담기에는 적절치 않다.
2) Array Resizing
- 배열은 메모리가 순차적으로 채워지기 때문에 배열이 처음 생성될 때 어느 정도 메모리를 미리 할당한다.(=pre-allocation)
- 메모리를 pre-allocation함으로써 새로 추가되는 요소들도 순차적으로 메모리에 저장될 수 있다.
- 하지만 요소들이 처음 할당한 메모리 이상으로 많아지면 resizing이 필요
- 즉 메모리를 더 할당해야 한다. 즉, 배열의 resizing은 상대적으로 오래걸리는 operation이다.
- 사이즈 예측이 잘 안되는 데이터를 다루기에 적절치 않다!
3) 언제 사용하면 좋을까?
- 순차열적인 데이터 저장할 때
- 다차원 데이터를 다룰 때 >> Multi-dimensional Array
- 어떠한 특정 요소를 빠르게 읽어야 할 때 >> index를 통해 곧바로 읽을 수 있기 때문
- 데이터의 사이즈가 급변하지 않을 때
- 요소가 자주 삭제, 추가되지 않을 때