이번에는 자료구조 중 가장 기본적으로 배우는 '배열'과 '리스터'에 관한 포스팅입니다.
📢 Array와 Linked List과 ArrayList는 언제 쓰일까
: 여러 개의 원소를 저장하고 싶다면 배열과 리스트라는 방법으로 해결할 수 있습니다.
⚒️ Array, Linked List, ArrayList의 차이점
1. Array
- 장점
* 모든 원소의 주소를 알고 있음 == index
- 따라서 임의의 원소 값을 읽거나 찾을 때 유리
- 단점
* 배열에 새로운 원소를 추가하는 것이 어려움
- Array는 선언 시 크기와 데이터 타입을 지정함 -> 미리 메모리 공간을 할당할 사이즈가 정해져있는 자료구조
- 공간이 모자라면 모든 원소를 새로운 위치의 메모리로 옮겨야 함 -> 속도가 느려짐
- 이를 개선하기 위해, 메모리를 미리 확보하고 있음 -> 단, 추가하는 일이 없다면 메모리를 낭비하는 것..
2. Linked List
- 장점
* 새로운 원소 추가, 삭제가 쉬움
- 삽입 & 삭제가 자유로워서 원소를 따로 옮길 일이 없음 -> 이전 원소가 무엇을 가리키는지만 바꾸면 되기 때문!
- 단점
* 특정한 원소를 읽기가 안좋음
- 모든 원소를 한번에 다 읽을때는 상관없지만, 특정 원소를 찾아야 할 때는 순차접근밖에 할 수 없음
3. ArrayList : Array의 단점을 해결하기 위해 생긴 자료구조
- 장점
* 크기를 정하지 않기 때문에 새로운 데이터 추가&삭제가 가능함
- Array와 달리 선언 시 크기를 정해주지 않는다 -> 단, 순서가 중요
- 순서와 index가 존재하기 때문에 데이터를 찾기 쉬움
- 단점
* 단, 새로운 원소 추가, 삭제가 느림
- 순서에 따라서 줄줄이 밀리거나 당겨지기 때문에 시간이 오래걸림