Web/Java
Array와 Collection Framework의 차이는?!
돌건
2021. 3. 26. 15:20
Java를 사용하는 개발자라면 한 번쯤은 배열과 컬렉션 프레임워크의 차이에 대해 알아봤을 것이다. 혹여나 아직 이 둘의 차이에 대해 모르는 분들을 위해 간단하게 Array와 Collection Framework의 차이를 알아보자.
1. Array의 특징
- 자료형이 동일해야 한다.
- 크기가 고정된다.
- index를 통한 검색이 용이하다.
- 연속적이기 때문에 메모리 관리가 편하다. (주소값이 연속적이다.)
- 데이터의 추가, 삭제가 번거롭다.
- index의 위치에 새로운 데이터를 추가하는 경우, index ~ 마지막 요소위치까지 한 칸씩 뒤로 이동시켜줘야 한다. 반대로 삭제 시에는 index + 1 ~ 마지막 요소를 앞으로 한 칸씩 이동시켜줘야 한다.
2. Collection Framework의 특징
- 자료형이 동일해야하며 크기가 고정되어 데이터의 추가, 삭제가 번거로운 배열의 단점을 보완해 '동적 배열'의 개념이 적용되었다.
- 자료형이 동일하지 않아도 된다.
- 데이터의 추가, 삭제가 편하다.
- 추가 시에는 크기가 자동으로 늘어나게 되고, 삭제 시에는 줄어든다. (늘어나고 줄어드는 크기의 단위는 존재하는 것으로 안다. ArrayList의 경우 설정한 저장 용량 크기를 넘어서면 1.5배 증가시킨다.)
- 데이터의 추가 및 삭제는 편하지만, 실제로 데이터가 추가되는 경우에는 내부적으로 copy가 발생한다. 이 때 내부적으로 복사되는 크기는 [컬렉션의 크기 - 삽입하려는 위치 인덱스] 만큼이므로, 앞 쪽에 데이터를 추가할 때는 컬렉션의 크기에 따라 성능 저하가 나타날 수도 있다.
- Set, List, Map이 대표적이다.