출처 : Java의 정석(남궁성 저)
컬렉션 프레임워크(Collections Framework)
컬렉션
- 여러 객체 데이터를 모아놓은 것이다.
- Framework = 라이브러리(기능) + 프로그래밍 방식
- 표준화되고 정형화된 체계적인 프로그래밍 방식이다.
Collections Framework
- 컬렉션(다수의 객체)을 다루기(저장, 삭제, 검색, 비교, 정렬) 위한 표준화된 프로그래밍 방식
- 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공한다.
- JDK1.2부터 java.util패키지에 포함하여 제공되었다.
Collection class
- 여러 데이터를 저장할 수 있는 클래스(ex. Vector, ArrayList, HashSet)
컬렉션 프레임워크의 핵심 인터페이스
- List, Set, Map의 세가지가 있다.
List
- 순서가 있는 데이터의 집합이며 데이터의 중복을 허용한다.(대기자 명단 등)
- 구현 클래스로는 ArrayList, LinkedList, Stack, Vector 등이 있다.
Set
- 순서를 유지하지 않는 데이터의 집합이며 데이터의 중복을 허용하지 않는다.(양의 정수집합, 소수집합 등)
- 구현 클래스로는 HashSet, TreeSet 등이 있다.
Map
- 키(key)와 값(value)의 쌍(pair)로 이루어진 데이터의 집합이다.
- 순서는 유지되지 않으며, 키는 중복을 허용하지 않으나 값은 중복을 허용한다.(우편번호, 지역번호, 전화번호 등)
- 구현 클래스로는 HashMap, TreeMap, HashTable, Properties 등이 있다.
Collection 인터페이스의 메소드
- boolean add(Object o), boolean addAll(Collection c) = 추가
지정된 객체 또는 컬렉션의 객체들을 Collection에 추가한다
- void clear()
Collection의 모든 객체를 삭제한다
- boolean contains(Object o), boolean containsAll(Collection c) = 검색
지정된 객체 또는 컬렉션의 개게들이 Collection에 포함되어 있는지 확인한다.
- boolean equals(Object o)
동일한 Collection인지 비교한다
- int hashCode()
Collection의 hashCode를 반환한다.
- boolean isEmpty()
Collection이 비어있는지 확인한다
- Iterator iterator() = 조회
Collection의 iterator를 얻어서 반환한다
- boolean remove(Object o)
지정된 객체를 삭제한다
- boolean remobeAll(Collection c)
지정된 Collection에 포함된 객체들을 삭제한다
- boolean retainAll(Collection c)
지정된 Collection에 포함된 객체만 남기고 다른 객체들은 삭제한다. 이로 인해 Collection에 변화가 생기면 true, 아니면false를 반환하게 된다.
- int size()
Collection에 저장된 객체의 개수를 반환한다
- Object[] toArray()
Collection에 저장된 객체를 객체배열(Object[])로 반환한다
- Object[] toArray(Object[] o)
지정된 배열에 Collection의 객체를 저장한 후 반환한다.
List인터페이스의 메소드
- 순서와 중복을 허용한다.
- List인터페이스를 구현한 Collection 클래스등 가장 유명한 것은 Vector, ArrayList, LinkedList이다.
- 이 중 Vector는 Stack을 상속받고 있으며 Collection framework가 등장하기 이전부터 존재해왔어서 뒤에 List가 붙지 않는다.
- Collection이 등장하기 전에는 Object의 자손이라는 간단한 상속구조였으나, Framework가 등장한 후에는 Object와 Collection을 둘 다 상속받는 복잡한 상속구조가 되었다.
- List인터페이스는 Collection인터페이스와는 다르게 index를 가지고 있어 원하는 지점에 추가를 하거나 제거를 할 수 있다.
- void add(int index, Object element), boolean addAll(int index, Collection c) = 추가
지정된 위치(index)에 객체(element) 또는 컬렉션에 포함된 객체들을 추가한다
- Object get(int index) = 조회
지정된 위치(index)에 있는 객체를 반환한다
- int indexOf(Object o) = 검색
지정된 객체의 위치(index)를 반환한다(List의 첫 요소부터 정방향으로 찾게 된다)
- int lastIndexOf(Object o) = 검색
지정된 객체의 위치를 반환한다(List의 마지막 요소부터 역방향으로 찾는다)
- ListIterator listIterator(), ListIterator listIterator(int index)
List의 객체에 접근할 수 있는 ListIterator를 반환한다
- Object remove(int index) = 삭제
지정된 위치에 있는 객체를 삭제하고 삭제된 객체를 반환한다
- Object set(int index, Object element) = 변경
지정된 위치(index)에 객체(element)를 저장한다
- void sort(Comparator c) = 정렬
지정된 비교자(comparator)로 List를 정렬한다
- List subList(int fromIndex, int toIndex)
지정된 범위(fromIndex부터 toIndex까지)에 있는 객체를 반환한다
Set 인터페이스
- 순서가 없으며 중복을 허용하지 않는다.
- Collection인터페이스와 메소드가 동일하다
- Set인터페이스를 구현한 대표적인 Collection클래스로는 HashSet, SortedSet, TreeSet이 있으며 이 중 TreeSet은 SortedSet인터페이스를 구현한 클래스이다.
Set 인터페이스에서 집합에 관련된 메소드
- Collection에 변화가 있다면 true, 아니면 false를 반환하게 된다.
- boolean addAll(Collection c)
지정된 Collection의 객체들을 Collection에 추가한다(합집합)
- boolean containsAll(Collection c)
지정된 컬렉션의 객체들이 컬렉션에 포함되어 있는지 확인한다(부분집합)
- boolean removeAll(Collection c)
Collection에 포함된 객체들을 삭제한다(차집합)
-boolean retainAll(Collection c)
지정된 컬렉션에 포함된 객체들만 남기고 나머지는 삭제한다(교집합)
Map 인터페이스
- 순서가 없으며 키에는 중복이 허용되지 않으나 값에는 중복이 허용된다.
- Hashtable은 Collection framework가 등장하기 전에 있던 구버전이며, HashMap은 프레임워크 이후 등장한 새로운 인터페이스이다.
Map 인터페이스의 메소드
- void clear()
Map의 모든 객체를 삭제한다
- boolean containsKey(Object key)
지정된 key객체와 일치하는 Map의 key객체가 있는지 확인한다
- boolean containsValue(Object value)
지정된 value객체와 일치하는 Map의 value객체가 있는지 확인한다
- Set entrySet()
Map에 저장되어 있는 key-value쌍을 Map.Entry타입의 객체로 저장한 Set으로 반환한다.
- boolean equals(Object o)
동일한 Map인지 비교한다
- Object get(Object key)
지정한 key객체에 대응하는 balue객체를 찾아서 반환한다
- int hashCode()
해시코드를 반환한다
- boolean isEmpty()
Map이 비어있는지 확인한다
- Set keySet()
Map에 저장된 모든 key객체를 반환한다
- Object put(Object key, Object value)
Map에 value객체를 key객체에 연결(mapping)하여 저장한다
- void putAll(Map t)
지정된 Map의 모든 key-value쌍을 추가한다
- Object remove(Object key)
지정한 key객체와 일치하는 key-value객체를 삭제한다
- int size()
Map에 저장된 모든 key-value쌍의 개수를 반환한다
- Collection values()
Map에 저장된 모든 value객체를 반환한다
'프로그래밍 > Java' 카테고리의 다른 글
Iterator와 Enumeration, ListIterator에 대해 (0) | 2019.04.25 |
---|---|
Stack과 Queue에 대해 (0) | 2019.04.22 |
Collection framework에 대해 (3) (0) | 2019.04.21 |
Collection framework에 대해(2) (0) | 2019.04.20 |
Hashset에 대해 (0) | 2019.04.18 |