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