컬렉션 프레임워크

정순동·2023년 12월 18일
0

자바기초

목록 보기
56/89

컬렉션

컬렉션이란? '데이터 군을 저장하는 클래스들을 표준화한 설계'를 뜻한다.
컬렉션 = 다수의 데이터, 데이터 그룹
프레임워크 = 표준화된 프로그래밍 방식

Java API문서에서는 '데이터 그룹을 다루고 표현하기 위한 단일화된 구조'라고 정의.

JDK1.2 이전까지는 Vector, Hashtable, properties와 같은 컬렉션 클래스, 다수의 데이터를 저장할 수 있는 클래스들을 서로 다른 각자의 방법으로 처리 했으나 1.2부터 컬렉션으로 모든 컬렉션 클래스를 표준화된 방식으로 다룰 수 있다.

라이브러리와 프레임워크

라이브러리는 공통으로 사용될만한 유용한 기능을 모듈화하여 제공하는데 비해, 프레임워크는 단수히 기능뿐만 아니라 프로그래밍 방식을 정형화 하여 프로그램의 개발 생산성을 높이고 유지보수를 용이하게 한다. 초창기 컬렉션 프레임워크도 코딩 방식을 표준하하고 생산성과 코드의 재사용성을 높이려 헀으나 별다른 성과를 거두지 못했고 JDK8에 이르러서야 비로소 '람다와 스트림'에 의해 컬렉션이 이루지 못한 표준화, 즉 다양한 종류의 데이터들을 동일한 방식으로 처리 가능해졌다.

컬렉션의 핵심 인터페이스

컬렉션 프레임워크에서는 컬렉션데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고 각 컬렉션을 다루는데 필요한 기능을 가진 3개의 인터페이스를 정의하였다. 그리고 인터페이스 List와 Set의 공통된 부분을 다시 뽑아내 새로운 인터페이스인 Collection을 추가로 정의했다.

키(Key)란, 데이터 집합 중에서 어떤 값(value)를 찾는데 열쇠(key)가 된다는 의미에서 붙여진 이름이다. 그래서 키(Key)는 중복을 허용하지 않는다.

실제 개발 시에는 다루고자 하는 컬렉션의 특징을 파악하고 어떤 인터페이스를 구현한 컬렉션 클래스를 사용해야 하는지 선택해야 하므로 위 표를 잘 살표보고 넘어가자. 컬렉션 프러임워크의 모든 컬렉션 클래스는 위 인터페이스 중 하나를 구현하고 해당 클래스 이름에 적혀있다.

Collection 인터페이스

List와 Set의 조상인 Collection에는 다음과 같은 메서드들이 정의돼 있다.

이 외의 '람다와 스트림'은 따로 포스트 예정이다.

List 인터페이스

List는 중복을 허용하면서 저장 순서가 유지되는 클래스를 구현해야하는 인터페이스이다.
List 인터페이스에 정의된 메서드는 아래와 같다. Collection상속은 제외한다.

Set 인터페이스

Set은 중복을 허용하지 않고 저장순서가 유지되지 않는 클래스를 구현해야 하는 인터페이스이다. HashSet, TreeSet 등이 있다.
Set인터페이스에는 다음과 같은 메서드들이 있는데, 모두 Collection인터페이스로부터 상속받은 것들이다.(똑같다)

Map 인터페이스

Map은 키와 값의 쌍으로 묶어 저장하는 클래스를 구현해야하는 인터페이스이다.
기존에 저장된 데이터와 중복된 키와 값을 저장하면 기존값은 없어진다.
Hashtable, HashMap, LinkedHashMap, SortedMap, TreeMap 등이 있다.

Map이란 개념은 어떤 두 값을 연결한다는 의미에서 붙여진 이름이다. (매핑)

아래와 같은 메서드가 존재한다.

value()에서는 반환타입이 Collection이고, keySet()에서는 반환타입이 Set인 것에 주목하자. value는 중복이 허용되어 Collection타입으로 반환하고, key는 중복을 허용하지 않기 때문에 Set타입으로 반환한다.

0개의 댓글

관련 채용 정보