항상 정리하고싶었던 컬렉션을 드디어 드디어 스터디덕분에 정리하는 기회가 생겼다......ㅋ
항상 말로만 해야지 했던 부분이었는데 이렇게 정리할 수 있는 기회가 되어 너무 좋다. 그리고 내가 맡은 부분이 뭔가 제일 광범위한? 느낌이라... 재밌다... 진작에 시작할 걸.. 시간이 너무 없다ㅎㅎ
🔵 자바 컨테이너(컬렉션 프레임워크)란?
💬
"자바 컬렉션 프레임워크" 는 자바에서 제공하는 표준 라이브러리로 객체들을 저장하고 관리하는 자료구조입니다. 객체들을 담고 관리하는 역할을 수행하기 때문에 컨테이너 라고 부르기도 합니다.
컬렉션 프레임워크는 자바의 인터페이스를 사용하여 구현됩니다.
자바 컬렉션 프레임워크는 'java.util' 패키지에 포함되어 있으며, List, Set, Queue, Map 등 다양한 인터페이스와 구현 클래스들로 구성되어 있습니다.
자바 컨테이너는 표준화된 클래스를 구현하고 있으며 개발자가 직접 이를 구현하지 않아도 편하게 사용이 가능합니다. 또한, 상황에 따라 객체의 수를 동적으로 변화시키기 때문에 공간의 효율성을 높여준다는 장점으로 자바 컨테이너를 사용한다고 할 수 있습니다.
🔵 핵심 컬렉션 인터페이스 계층 구조
계층도에서 Collection이 최상위 인터페이스이며, List와 Set은 컬렉션 인터페이스 를 상속 받는다.
Map은 독립적인 인터페이스로 Collection 계층에는 포함되지 않는다
✅ Map이 독립적인 인터페이스인 이유?
- Key와 Value 쌍으로 이루어진 객체의 집합으로 키를 사용하여 값에 접근하고 관리한다. 이러한 동작은 List, Set과는 다른 동작방식을 나타낸다.
- 자료구조를 위한 사용 목적과 특성 (키와 값의 매핑 관계를 표현)
✅ 특정 인터페이스를 구현하는 기본적인 구현 클래스
Interface | Hash Table | 크기 조절 가능한 배열 | 균형 트리 | Linked List | Hash Table + Linked List |
Set | HashSet | TreeSet | LinkedHashSet | ||
List | ArrayList | LinkedList | |||
Deque | ArrayDeque | LinkedList | |||
Map | HashMap | TreeMap | LinkedHashMap |
🔵 Collection 인터페이스 그룹
1. Collection
모든 컬렉션 클래스가 구현해야 하는 메서드들을 포함하고 있는 Collection 계층 구조의 최상위 계층이다.
Collection 인터페이스는 직접적인 구현은 제공하지 않는다.
2. Set
중복 요소를 포함할 수 없는 컬렉션이다.
랜덤 액세스(Random access)가 지원되지 않으며, iterator나 foreach를 사용하여 요소를 탐색할 수 있다.
Set 인터페이스로 구현된 클래스로는 HashSet, TreeSet, LinkedHashSet 등이 있다.
3. List
중복 요소를 포함 할 수 있으며 순서가 있는 컬렉션이다. (시퀀스라고도 함)
인덱스를 사용하여 요소에 접근이 가능하며 삽입되는 위치를 제어할 수 있다.
List 인터페이스로 구현된 클래스로는 ArrayList, LinkedList 등이 있다.
4. Queue
처리하기 전에 여러 요소를 보유하는 데 사용되는 컬렉션이다. 기본 컬렉션 작업 되에도 추가 삽입, 추출 및 검사 작업을 제공한다.
Queue 에서는 일반적으로 FIFO(선입선출) 방식으로 동작하지만, 우선순위 큐와 같이 우선순위에 따라 요소를 정렬하는 경우도 있다.
5. Deque
처리하기 전에 여러 요소를 보유하는 데 사용되는 컬렉션이다. 기본 컬렉션 작업 되에도 추가 삽입, 추출 및 검사 작업을 제공한다.
데크는 FIFO(선입선출) 및 LIFO(후입선출) 모두로 사용할 수 있다.
Deque 에서 모든 새 요소는 양쪽 끝에서 삽입, 검색 및 제거될 수 있다.
6. SortedSet
요소를 오름차순으로 유지하는 Set이다.
SortedSet 은 추가적인 작업을 통해 정렬된 집합을 활용할 수 있다.
🔵 Map 인터페이스 그룹
1. Map
키와 값을 매핑한다. 중복 키를 포함 할 수 없으며 하나의 값에만 매핑이 가능하다.
TreeMap, LinkedHashMap, HashMap과 같은 구현 클래스를 사용하여 Map 인터페이스를 구현할 수 있다.
2. SortedMap
SortedMap 은 오름차순 키 순서로 유지하는 Map 이다.
🔵 자바 컨테이너(컬렉션 프레임워크) 사용 이유
1. 다양한 데이터 구조 제공
ArrayList, LinkedList, HashSet, TreeMap 등의 다양한 컨테이너 클래스를 사용하여 데이터를 저장하고 조작할 수 있다.
이러한 컨테이너 클래스들은 데이터를 효율적으로 저장하고 검색, 삽입, 삭제 등의 작업을 수행하는 데 필요한 다양한 메서드와 알고리즘을 제공한다.
2. 편리한 API 제공
자바 컬렉션 프레임워크는 일관된 API(Application Programming Interface)를 제공하여 데이터 조작을 간편하게 할 수 있다.
컨테이너 클래스들은 동일한 인터페이스를 구현하고 있으므로, 코드를 유지보수하거나 다른 컨테이너로 전환하기 쉽다.
3. 자동 크기 조정
자바 컨테이너 클래스들은 내부적으로 크기를 자동으로 조정하는 기능을 제공한다. 이러한 자동 크기 조정 기능은 개발자가 크기 관리에 신경 쓰지 않아도 되므로 편리하다.
하지만, 사이즈가 정해진 배열 등에서는 ArrayList보다 Array를 사용하는 것이 더욱 효율적이다.
4. 성능 최적화
자바 컬렉션 프레임워크는 내부적으로 데이터를 효율적으로 저장하고 처리하기 위해 최적화되어 있다.
예를 들어, HashMap은 해시 함수를 사용하여 데이터를 빠르게 검색하고, TreeSet은 이진 검색 트리를 사용하여 데이터를 정렬된 상태로 유지한다.
이러한 최적화는 데이터 처리 작업의 성능을 향상시키는 데 도움을 준다.
🔻 참고 자료
🔗 Oracle Java Interface Tutorial 공식문서
https://docs.oracle.com/javase/tutorial/collections/interfaces/index.html
🔗 Collection Framework Overview
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/doc-files/coll-overview.html
🔗 자바 컬렉션 프레임워크(Java Collection Framework) 정리
🔗 [JAVA] 컨테이너 - 기초
http://asuraiv.blogspot.com/2015/05/java-container.html
범위가 엄청엄청 광범위해서 더 더 자세한 공부가 많이 필요할 듯 한 이번 컨테이너 ...!
내일 스터디하면서 팀원들 꺼 보고 따로 정리해야겠다 : )
'LANGUAGE > JAVA' 카테고리의 다른 글
[JAVA] Iterator 의 사용 목적과 특징 / Collection Framework (0) | 2023.06.26 |
---|---|
[JAVA] Array, ArrayList, LinkedList 비교하기 / 차이점 (2) | 2023.06.26 |
[JAVA] 데이터 타입 / String 기본 메서드 및 데이터 타입 알아보기 (0) | 2023.06.18 |
[JAVA] 제네릭(Generic)이란? / 컬렉션과 데이터 구조 이해하기 (0) | 2023.05.19 |
[자료구조] 그래프(Graph)란? / 인접 행렬(Adjacency Matrix)과 인접 리스트(Adjacency List) (1) | 2023.05.17 |