본문 바로가기

프로그래밍/Java

Collections framework에 대해 (1)

출처 : 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