배열과 컬렉션
배열과 컬렉션은 프로그래밍에서 여러 개의 데이터를 효율적으로 저장하고 관리하기 위한 자료구조입니다.
각 개념과 특징을 비교하며 설명하면 다음과 같습니다.
--- 1. 배열 (Array) 개념 - 배열은 같은 데이터 타입의 요소들이 연속된 메모리 공간에 순차적으로 저장되는 자료구조입니다.
- 인덱스(보통 0부터 시작하는 정수)를 통해 각 요소에 접근할 수 있습니다.
특징 - 고정된 크기 : 배열은 생성 시에 크기가 정해지고, 이후 변경할 수 없습니다.
- 빠른 접근 속도 : 인덱스를 사용해 메모리 위치를 바로 참조하므로 접근 속도가 매우 빠릅니다.
- 동일한 타입 요소만 저장 : 배열은 한 가지 데이터 타입의 요소만 저장할 수 있습니다.
- 저장 순서 유지 : 요소들이 삽입된 순서를 유지합니다.
장점과 단점 | 장점 | 단점 | |---------------------------------|----------------------------------| | 데이터 접근 속도가 빠름 | 크기 변경이 불가능합니다 | | 메모리 사용이 효율적 | 삽입 및 삭제가 비효율적(중간 위치 조작 시) | | 구조가 단순하고 이해하기 쉬움 | 타입이 제한적임 | 예시 (Java) ```java int[] numbers = new int[5]; // 크기가 5인 정수 배열 생성 numbers[0] = 10; numbers[1] = 20; // 배열 요소 접근: numbers[0], numbers[1] ``` --- 2. 컬렉션 (Collection) 개념 - 컬렉션은 ‘데이터의 집합’을 의미하며, 다양한 데이터 타입과 크기를 갖는 데이터를 동적으로 관리할 수 있는 자료구조들의 총칭입니다.
- 보통 표준 라이브러리에서 제공하는 리스트(List), 집합(Set), 맵(Map) 등이 컬렉션에 포함됩니다.
특징 - 가변 크기 : 데이터가 추가되거나 삭제되어도 크기가 자동으로 조절됩니다.
- 다양한 자료구조 제공 : 순서가 있는 리스트, 순서가 없는 집합, 키-값 쌍을 저장하는 맵 등 다양한 형태가 있습니다.
- 객체 저장 가능 : 보통 제네릭(Generics)을 사용해 다양한 타입의 객체를 저장할 수 있습니다.
- 풍부한 메서드 지원 : 삽입, 삭제, 검색, 정렬 등 다양한 기능들을 메서드로 제공합니다.
장점과 단점 | 장점 | 단점 | |-----------------------------------------|---------------------------------------| | 크기 변경이 자유로움 | 배열에 비해 상대적으로 느린 접근 속도 | | 다양한 자료구조로 용도에 맞는 선택 가능 | 내부적으로 추가적인 메모리(예: 노드, 포인터 등) 사용 | | 데이터 삽입, 삭제 등 조작이 편리함 | 구조와 사용법을 숙지해야 함 | 주요 컬렉션 종류 예 (Java) - List : 순서를 유지하며 중복 저장 가능 (예: ArrayList, LinkedList) - Set : 중복 불가능하며 순서를 보장하지 않음 (예: HashSet, TreeSet) - Map : 키와 값을 쌍으로 저장 (예: HashMap, TreeMap) 예시 (Java) ```java import java.util.ArrayList; import java.util.List; List
- 컬렉션 은 크기가 동적으로 변하며 데이터 추가, 삭제가 빈번하고 다양한 타입과 자료구조가 필요한 경우 사용합니다.
두 자료구조는 목적과 사용 상황에 따라 적절히 선택하여 사용하는 것이 중요합니다.