1. 컬렉션 프레임 웍(Collection Framework)
- 컬렉션 : 여러 객체(데이터)를 모아 놓은 것을 의미
- 프레임웍 : 표준화, 정형화된 체계적인 프로그래밍 방식
컬렉션 프레임웍이란, ‘데이터 군(群)을 지정하는 클래스들을 표준화한 설계’를 뜻한다. 컬렉션(Collection)은 다수(多數)의 데이터(객체), 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다.
JDK1.2부터 컬렉션 프레임웍이 등장 → 모든 컬렉션 클래스를 표준화된 방식으로 다룰 수 있도록 체계화되었다.
컬렉션 프레임웍은 컬렉션, 다수의 데이터(객체)를 다루는 데 필요한 다양하고 풍부한 클래스들을 제공(객체를 다룬다 →저장, 삭제, 검색)
*컬렉션 클래스 : 다수의 데이터를 저정할 수 있는 클래스(ex. vector, ArrayList, HashSet)
✏️자바에서는 프로그래밍 하면서 필요한 여러 자료구조들을 java.util패키지에서 제공하고 있다.
1.1 컬렉션 프레임웍의 핵심 인터페이스
컬렉션 프레임웍에서는 컬렉션데이터 그룹을 크게 8가지 타입이 존재한다고 인식하고 각 컬렉션을 다루는데 필요한 기능을 가진 3개의 인터페이스를 정의하였다.
그리고 인터페이스 List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가로 정의하였다.

Map인터페이스는 List, Set과는 전혀 다른 형태로 컬렉션을 다루기 때문에 상속계층도 포함X
✏️우리가 다루는 데이터의 특성을 보니까 크게 3가지로 나눌 수 있음 그걸 인터페이스로 정의해 놓은게 List, Set, Map 우리가 다룰 데이터는 이 세가지 중에 하나라고 보면 됨
[컬렉션 프레임웍의 핵심 인터페이스와 특징] - ★11장 전체에서 제일중요
인터페이스 | 특정 |
List 순서o중복o |
순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. 예) 대기자 명단 |
구현클래스 : ArrayList, LinkedList, stack, Vector 등 | |
Set 순서x중복x |
순서를 유지하지 않는 데이터의 집합. 데이터등의 중복을 허용하지 않는다. 예) 양의 정수집합, 소수의 집합 |
구현클래스 : HashSet, TreeSet 등 | |
Map 순서x, 중복(키id-x, 값pw-o) |
키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다. 예) 우편번호, 지역번호(전화번호) |
구현 클래스 : HashMap, TreeMap, Hashtable, Properties 등 |
컬렉션 프레임웍의 모든 컬렉션 클래스들은 List, Set, Map 중의 하나를 구현하고 있다.
*기존 클래스들은 컬렉션 프레임웍이 만들어지기 이전부터 존재(가능하면 사용x)
Collection인터페이스
List와 Set의 조상
Collection인터페이스는 컬렉션 클래스에 저장된 데이터를 읽고, 추가하고 삭제하는 등 컬렉션을 다루기는데 가장 기본적인 메서드들을 정의하고 있다.
List인터페이스
중복을 허용 하면서 저장순서가 유지 되는 컬렉션을 구현하는데 사용된다.

Set인터페이스
✳️Set인터페이스의 메서드는 Collection인터페이스와 동일
중복을 허용하지 않고 저장순서가 유지되지 않는 컬렉션 클래스를 구현하는데 사용된다.
✏️집합과 관련된 메서드(Collection에 변화가 있으면 true, 아니면 false를 반환)

Map인터페이스
키(key)와 값(value)을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스를 구현하는 데 사용된다.
키는 중복될 수 없지만 값은 중복을 허용한다.
기존에 저장된 데이터와 중복된 키와 값을 저장하면 기존의 값은 없어지고 마지막에 저장된 값이 남게 된다.

Map.Entry인터페이스
Map인터페이스의 내부 인터페이스
Map에 저장되는 key-value쌍을 다루기 위해 내부적으로 Entry인터페이스를 정의해 놓았다.
출처 : 남궁성. 「자바의 정석」. 도우출판. 2016
'프로그래밍언어 > Java' 카테고리의 다른 글
[자바의 정석] 11. 컬렉션 프레임웍 - LinkedList (0) | 2023.08.06 |
---|---|
[자바의 정석] 11. 컬렉션 프레임웍 - ArrayList (0) | 2023.08.06 |
[자바의 정석] 09. java.lang패키지와 유용한 클래스 (2) - 유용한 클래스 (0) | 2023.08.05 |
[자바의 정석] 09. java.lang패키지와 유용한 클래스 (1) - java.lang패키지 (0) | 2023.08.05 |
[자바의 정석] 07. 객체지향 프로그래밍Ⅱ(3) (0) | 2023.08.03 |