본문 바로가기

Java & Spring/Java

Java 컬렉션 프레임워크란?

728x90

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 컬렉션 프레임워크에 대해서 설명해봐.

프레임워크와 라이브러리 차이에 대해 설명해보고 컬렉션 프레임워크가 왜 프레임워크인지 설명해봐.

 

728x90