I. Java 컬렉션 프레임워크
@ Java Collection Interfaces의 정의와 특징.
· Java 컬렉션 프레임워크는 다양한 데이터 구조를 관리하고 조작할 수 있는 클래스와 인터페이스의 집합이다.
· Java 프로그램에서 데이터를 효율적으로 저장, 검색, 삭제 및 수정할 수 있는 방법을 제공한다.
· 컬렉션 프레임워크는 크게 컬렉션 인터페이스, 구현 클래스, 유틸리티 클래스로 나눌 수 있다.
@ Java 컬렉션 프레임워크의 사용목적.
· 다양한 데이터 구조를 제공하여 효율적인 데이터 관리를 지원.
각 컬렉션의 특성과 사용 목적에 맞는 구현 클래스를 선택하고 활용하는 것이 성능을 최적화하는 데 중요
1. 컬렉션 인터페이스(Collection Interfaces)
· 컬렉션 인터페이스는 컬렉션의 동작을 정의하는 계약이다. 이 인터페이스들은 특정 데이터 구조의 기능을 지정하고, 다양한 구현 클래스를 통해 실제 동작을 구현한다.
· Collection : 가장 기본적인 인터페이스로, 데이터 저장, 탐색, 삭제 등의 기본적인 메서드 제공.
| 구분 | 설명 | 구현 클래스 |
| List | 순서가 있는 데이터 구조로, 중복된 원소를 허용 | ArrayList, LinkedList |
| Set | 순서가 없고, 중복된 원소를 허용하지 않는 데이터 구조 | HashSet, TreeSet |
| Queue | FIFO(First-In-First-Out) 방식으로 데이터를 처리하는 데이터 구조 | LinkedList, PriorityQueue |
· Map : 이는 키와 값의 쌍으로 데이터를 저장하고, 컬렉션 프레임워크의 일부이지만
데이터의 구조적 차이 때문에 Collection 계층 구조에 포함되지 않음.
| 구분 | 설명 | 구현 클래스 |
| Map(비컬렉션) | 키와 값의 쌍으로 데이터를 저장하는 자료구조 (Collection의 자식이 아님) |
HashMap, TreeMap, LinkedHashMap |

2. 구현 클래스(Implementing Classes)
· 각 컬렉션 인터페이스를 실제로 구현한 클래스들이 있으며, 데이터의 종류와 사용 목적에 맞게 선택할 수 있다.
| 구분 | 설명 |
| List의 구현 클래스 | · ArrayList: 동적 배열을 기반으로 한 List로, 검색 속도가 빠르고 인덱스를 통해 접근 가능 · LinkedList: 연결 리스트 기반으로, 데이터 삽입 및 삭제가 빠름. |
| Set의 구현 클래스 | · HashSet: 해시 테이블을 기반으로 한 Set으로, 순서가 없고 중복을 허용x · TreeSet: 데이터를 정렬된 상태로 저장하는 Set으로 중복을 허용하지 않으며 요소를 자연 순서나 Comparator를 이용해 정렬 |
| Queue의 구현 클래스 |
· LinkedList: Queue 인터페이스도 구현하며, 삽입 및 삭제가 빠름 · PriorityQueue: 우선순위 큐로, 데이터가 우선순위에 따라 자동으로 정렬 |
| Map의 구현 클래스 |
· HashMap: 해시 테이블을 기반으로 하는 Map으로, 키-값 쌍을 저장하며 순서가 보장되지 않음. · TreeMap: 데이터를 정렬된 상태로 저장하는 Map으로, 키를 자연 순서대로 정렬하거나 커스텀 Comparator로 정렬 가능. · LinkedHashMap: 입력된 순서를 유지하는 Map으로, 순서를 유지하면서 효율적으로 데이터를 처리 가능. |
3. 유틸리티 클래스(Utility Classes)
· 컬렉션의 기능을 보조하는 여러 가지 유틸리티 메서드를 제공하는 클래스
· Collections: 컬렉션을 다루는 정적 메서드를 제공
예를 들어, 정렬, 동기화, 최댓값/최솟값 찾기 등의 작업을 수행
· Arrays : 배열을 다루는 유틸리티 클래스로, 배열의 정렬, 복사 등을 처리
4. Iterator와 Listlterator
· Iterator: 컬렉션의 원소를 순차적으로 탐색하는 데 사용되는 인터페이스
hasNext(), next(), remove() 등의 메서드를 제공
· ListIterator: Iterator의 확장으로, List에서 양방향으로 탐색 가능.
add(), previous(), set() 등의 메서드도 지원.
5. 컬렉션 프레임워크의 주요 특징
· 동기화(Synchronization): Collections.synchronizedList()와 같은 방법을 통해 컬렉션을 동기화하여
멀티스레드 환경에서 안전하게 사용 가능.
· 제네릭(Generics): Java 컬렉션 프레임워크는 제네릭을 지원하여, 타입 안정성을 제공하고
런타임 시 발생할 수 있는 ClassCastException을 방지 가능.
· 성능: 각 구현 클래스는 특정 작업에 최적화되어 있기 때문에
사용하려는 데이터의 특성에 맞는 컬렉션을 선택하는 것이 중요.
| 구분 | 설명 |
| ArrayList | 인덱스를 통한 검색이 빠르지만, 요소 추가나 삭제 시 비용이 많이 소요. (비용이 많이든다 == 시간이나 처리 성능의 부담이 크다.) |
| LinkedList | 삽입과 삭제가 빠르지만, 인덱스를 통한 접근 느림. |
| HashSet | 빠른 검색과 추가를 제공하지만, 순서가 중요하지 않은 경우에 적합 |
| TreeSet | 정렬된 순서로 데이터를 저장하지만, 성능 면에서는 HashSet보다 느림. |
II. 과제 답변해보기.
Java 컬렉션 프레임워크에 대해서 설명해봐.
프레임워크와 라이브러리 차이에 대해 설명해보고 컬렉션 프레임워크가 왜 프레임워크인지 설명해봐.
'Java & Spring > Java' 카테고리의 다른 글
| Java 컬렉션 프레임워크인가 아닌가..? (1) | 2025.01.21 |
|---|---|
| Java Stream(스트림) (0) | 2025.01.21 |
| 객체지향 프로그래밍 7장(30강 ~ 35강) (0) | 2022.06.07 |
| 객체지향 프로그래밍 7장(25강 ~ 29강) (0) | 2022.06.06 |
| 객체지향 프로그래밍 7장(20강 ~ 24강) (0) | 2022.06.06 |