자바/컬렉션 프레임워크

(1) 컬렉션 프레임웍이란?

백_곰 2022. 1. 10. 12:54

1. 컬렉션 프레임웍이란?

- 데이터 군(group)을 저장하는 클래스들을 표준화한 설계를 뜻한다.

 

- 컬렉션은 다수의 데이터, 즉 데이터 그룹을, 프레임웍은 표준화된 프로그래밍 방식을 의미한다.

 

- Vector, Hashtable, Properties와 같은 클래스를 컬렉션 클래스라고 부르며, 원래는 JDK1.2 이전에는

서로 다른 각자의 방식으로 처리해야 했으나, 프레임웍이 등장 이후로는 표준화된 방식으로 다룰 수

있도록 체계화되었다.

 

 

 

1-1. 컬렉션 프레임웍의 핵심 인터페이스

- 아래의 그림처럼 컬렉션 프레임웍에서는 컬렉션 데이터 그룹을 크게 3가지 타입이 존재하는데,

ListSet의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가 정의하였다.

- List, Set, Map에 대한 설명은 아래와 같다.

(1) List

: 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다.

 

( 구현 클래스: ArrayList, LinkedList, Stack, Vector 등 )

 

 

(2) Set

: 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않음.

( 예: 양의 정수 집합, 소수 집합 )

 

( 구현 클래스: HashSet, TreeSet 등 )

 

 

(3) Map

: 키와 값의 쌍으로 이루어진 데이터의 집합. 순서는 유지되지 않으며, 키는 중복을 허용하지 않지만, 값은 허용됨.

( 예: 우편번호, 지역번호(전화번호) )

 

( 구현 클래스: HashMap, TreeMap, Hashtable, Properties 등 )

 

( StackVector, Hashtable, Propertise 클래스들은 컬렉션 프레임웍이 만들어지기 전부터

존재하던 것이기 때문에 컬렉션 프레임웍의 명명법을 따르지 않는다. )

 

 

- 아래의 그림은 JDK 1.2전(왼쪽)과 JDK 1.2후(오른쪽)의 상속 계층도 변화를 보여준다.

 

 

 

1-2. Collection 인터페이스

- ListSet의 조상인 컬렉션 인터페이스에는 다음과 같은 메서들이 정의되어 있다.

( 중요한 부분만 적었으며, 자세한 내용은 자바의 정석 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 쌍을 다루기 위해 정의하였고, 보다 객체지향적으로 설계하도록 유도하기 위한 것이다.