배열과 리스트의 차이도 제대로 정리하고 넘어가보자.
Array VS List
- Array과 List의 가장 큰 차이점은 동적으로 크기 할당 여부이다.
- Array는 동적으로 크기 할당이 불가능하고, List는 가능하다.
예를 들자면 Array는 생성시에 N개의 크기로 생성한다면 N개 이상의 크기로 늘릴 수 없다는 것을 말한다. 반면에 List는 add,remove 메서드를 통해서 크기를 자유롭게 늘리고, 줄일 수 있다.
Array의 특징
- 배열은 연속된 메모리 공간으로 메모리 관리가 용이
- 배열의 값들은 index로 이루어져 있기때문에 접근시에 빠르게 해당 값을 찾을 수 있다.
- 동적 할당이 불가능
List의 특징
- 리스트는 포인터를 사용하여, 다음 데이터의 주소 값을 가지고 있기에 데이터 추가/삭제가 용이
- 데이터의 크기를 동적으로 할당가능하다.
- 포인터를 사용하여 다음 데이터의 주소값을 가지고 있어야 하므로, 불필요한 메모리가 추가로 사용되어 메모리 측면에서는 비효율적
- 배열에는 index라는 key값이 존재하지만, 리스트에는 키값이 존재하지 않기에 검색이 유용하지 않다.
배열 / 리스트는 언제 사용해야 하는가?
- 가장 중요한 포인트는 해당 데이터를 할상시, 데이터의 크기가 정해져 있는가?이다
- 정해져있다면 배열
- 정해지지 않았다면 리스트를 사용하는 것이 가장 좋은 방법