(1) 컬렉션 프레임웍이란?
1. 컬렉션 프레임웍이란?
- 데이터 군(group)을 저장하는 클래스들을 표준화한 설계를 뜻한다.
- 컬렉션은 다수의 데이터, 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다.
- Vector, Hashtable, Properties와 같은 클래스를 컬렉션 클래스라고 부르며, 원래는 JDK1.2 이전에는
서로 다른 각자의 방식으로 처리해야 했으나, 프레임웍이 등장 이후로는 표준화된 방식으로 다룰 수
있도록 체계화되었다.
1-1. 컬렉션 프레임웍의 핵심 인터페이스
- 아래의 그림처럼 컬렉션 프레임웍에서는 컬렉션 데이터 그룹을 크게 3가지 타입이 존재하는데,
List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가 정의하였다.
- List, Set, Map에 대한 설명은 아래와 같다.
(1) List
: 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다.
( 구현 클래스: ArrayList, LinkedList, Stack, Vector 등 )
(2) Set
: 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않음.
( 예: 양의 정수 집합, 소수 집합 )
( 구현 클래스: HashSet, TreeSet 등 )
(3) Map
: 키와 값의 쌍으로 이루어진 데이터의 집합. 순서는 유지되지 않으며, 키는 중복을 허용하지 않지만, 값은 허용됨.
( 예: 우편번호, 지역번호(전화번호) )
( 구현 클래스: HashMap, TreeMap, Hashtable, Properties 등 )
( Stack과 Vector, Hashtable, Propertise 클래스들은 컬렉션 프레임웍이 만들어지기 전부터
존재하던 것이기 때문에 컬렉션 프레임웍의 명명법을 따르지 않는다. )
- 아래의 그림은 JDK 1.2전(왼쪽)과 JDK 1.2후(오른쪽)의 상속 계층도 변화를 보여준다.
1-2. Collection 인터페이스
- List와 Set의 조상인 컬렉션 인터페이스에는 다음과 같은 메서들이 정의되어 있다.
( 중요한 부분만 적었으며, 자세한 내용은 자바의 정석 580p를 참고하자. )
(1) boolean retainAll(Collection c)
: 지정된 Collection에 포함된 객체만 남기고 다른 객체들은 Collection에서 삭제한다.
: 만약 변화가 있다면 true, 없다면 false이다.
(2) Object[] toArray()
: Collection에 저장된 객체를 객체배열(Object[])로 반환한다.
(3) Object[] toArray(Object[] a)
: 지정된 배열에 Collection의 객체를 저장해서 반환한다.
1-3. List 인터페이스
- 중복을 허용하면서 저장 순서가 유지되는 컬렉션을 구현하는데 사용된다.
- 아래의 그림은 상속 계층도를 보여준다.
- list에는 다음과 같은 메서들이 정의되어 있다.
( 중요한 부분만 적었으며, 자세한 내용은 자바의 정석 581p를 참고하자. )
(1) int indexOf(Object o)
: 첫 번째 요소부터 찾아서 지정된 객체의 위치 index 값을 반환한다.
(2) int lastIndexOf(Object o)
: 반대로 마지막 요소부터 찾아서 지정된 객체의 위치 index 값을 반환한다.
(3) void sort(Comparator c)
: 지정된 비교자(Comparator)로 List를 정렬한다.
(4) List subList(int fromIndex, int toIndex)
: 지정된 범위(from~to)에 있는 객체를 반환한다.
1-4. Set 인터페이스
- 중복을 허용하지 않고 저장 순서가 유지되지 않는 컬렉션을 구현하는데 사용된다.
- 아래의 그림은 상속 계층도를 보여준다.
1-5. Map 인터페이스
- 키와 값을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스를 구현하는 데 사용된다.
- 키는 중복될 수 없지만 값은 중복을 허용한다.
- 만약 중복된 키 값을 저장하게 된다면, 마지막에 저장한 것이 남게된다.
- 아래의 그림은 상속 계층도를 보여준다.
- Map에는 다음과 같은 메서들이 정의되어 있다.
( 중요한 부분만 적었으며, 자세한 내용은 자바의 정석 582p를 참고하자. )
(1) void clear()
: Map의 모든 객체를 삭제한다.
(2) Object get(Object key)
: 저장한 key 객체에 대응하는 value 객체를 찾아서 반환한다.
(3) Object put(Object key, Object value)
: Map에 value 객체를 key 객체에 연결하여 저장한다.
(4) Set entrySet()
: Map에 저장되어 있는 key-value 쌍을 Map.Entry 타입의 객체로 저장한 Set으로 반환한다.
(5) Set keySet()
: Map에 저장된 모든 key 객체를 반환한다.
(6) Collection values()
: Map에 저장된 모든 value 객체를 반환한다.
1-6. Map.Entry 인터페이스
- Map의 인터페이스의 내부 인터페이스이다.
- Map에 저장되는 key-value 쌍을 다루기 위해 정의하였고, 보다 객체지향적으로 설계하도록 유도하기 위한 것이다.