1. 컬렉션 프레임웍 (Collections Framework)
데이터 군을 저장하는 클래스들을 표준화한 설계
- 컬렉션은 다수의 데이터, 즉 데이터 그룹을 의미
- 프레임웍은 표준화된 프로그래밍 방식을 의미
- 컬렉션 프레임웍의 모든 컬렉션 클래스들은 List, Set, Map 중의 하나를 구현하고 있다.
인터페이스 | 구현 클래스 | 설명 |
List<E> | ArrayList, LinkedList, Stack, Vector | 순서가 있는 데이터의 집합으로, 데이터의 중복을 허용한다. |
Queue<E> | LinkedList, PriorityQueue | List와 유사 |
Set<E> | HashSet, TreeSet | 순서가 없는 데이터의 집합으로, 데이터의 중복을 허용하지 않는다. |
Map<K,V> | HashMap, TreeMap, Hashtable, Properties |
키와 값의 한 쌍으로 이루어지는 데이터의 집합으로, 순서가 없다. 이때 키는 중복을 허용하지 않지만, 값은 중복 허용한다. |
Vector, Stack, Hashtable, Properties와 같은 클래스들은 컬렉션 프레임웍이 만들어지기 전(JDK1.2 이전)부터 존재
Vector나 Hashtable과 같은 기존의 컬렉션 클래스들은 호환을 위해, 설계를 변경해서 남겨두었지만 가능하면 사용하지 않는 것이 좋다.
그 대신 새로 추가된 ArrayList와 HashMap을 사용하자.
2. Collection Interface
List와 Set의 조상
- Collection 인터페이스는 컬렉션 클래스에 저장된 데이터를 읽고, 추가하고 삭제하는 기본적인 메서드 정의
메서드 | 설명 |
boolean add(Object o) boolean addAll(Collection c) |
지정된 객체(o) 또는 Collection(c)의 객체들을 Collection에 추가한다. |
void clear() | Collection의 모든 객체를 삭제한다. |
boolean contains(Object o) boolean containsAll(Collection c) |
지정된 객체(o) 또는 Collection의 객체들이 Collection에 포함되어 있는지 확인한다. |
boolean equals(Object o) | 동일한 Collection인지 비교한다. |
int hashCode() | Collection의 hash code를 반환한다. |
boolean isEmpty() | Collection이 비어있는지 확인한다. |
Iterator iterator() | Collection의 Iterator를 얻어서 반환한다. |
boolean remove(Object o) | 지정된 객체를 삭제한다. |
boolean removeAll(Collection c) | 지정된 Collection에 포함된 객체들을 삭제한다. |
boolean retainAll(Collection c) | 지정된 Collection에 포함된 객체만을 남기고 다른 객체들은 Collection에서 삭제한다. 이 작업으로 인해 Collection에 변화가 있으면 true를 없으면 false를 반환한다. |
int size() | Collection에 저장된 객체의 개수를 반환한다. |
Object[] toArray() | Collection에 저장된 객체를 객체배열(Object[])로 반환한다. |
Object[] toArray(Object[] a) | 지정된 배열에 Collection의 객체를 저장해서 반환한다. |
3. List Interface
순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다.
- ArrayList
- 빠르고 크기 조절이 자유롭다.
- 단방향 포인터 구조로 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어나다.
- LinkedList
- 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용하다.
- 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰인다.
메서드 | 설명 |
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) | 지정된 객체의 위치(Index)를 반환한다. (List의 마지막 요소부터 역방향으로 찾는다.) |
ListIterator ListIterator() ListIterator listIterator(int index) |
List의 객체에 접근할 수 있는 ListIterator를 반환한다. |
Object remove(int index) | 지정된 위치(Index)에 있는 객체를 삭제하고 삭제된 객체를 반환한다. |
Object set(int index, Object element) | 지정된 위치(Index)에 객체(element)를 저장한다. |
void sort(Comparator c) | 지정된 비교자(comparator)로 List를 정렬한다. |
List subList(int fromIndex, int tolndex) | 지정된 범위(fromIndex부터 toIndex)에 있는 객체 반환한다. |
- Collection 인터페이스로부터 상속받은 메서드는 제외.
4. Set Interface
순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다.
- HashSet
- 가장 빠른 속도로 접근한다.
- 순서를 예측할 수 없다.
- TreeSet
- 정렬방법을 지정할 수 있다.
5. Map Interface
Key, Value의 쌍으로 이루어진 데이터의 집합,
순서가 없고, Key는 중복을 허용하지 않고, Value는 중복을 허용한다.
- 중복된 키와 값을 저장하면 기존의 값은 없어지고 마지막에 저장된 값이 남게된다.
- Hashtable
- 느리지만 동기화 락을 통해 무결성을 보장한다, 그러므로 안정성과 신뢰성이 높다.
- Key와 Value에 null이 허용되지 않는다.
- HashMap
- 속도가 빠르지만 동기화 보장하지 않는다, 그러므로 안정성과 신뢰성이 떨어진다.
- 중복과 순서가 허용되지 않으며 null값이 올 수 있다.
- TreeMap
- 정렬된 순서대로 Key와 Value을 저장하여 검색이 빠르다.
- 저장할 때 오름차순으로 정렬한다.
메서드 | 설명 |
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객체에 대응하는 value객체를 찾아서 반환한다. |
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객체를 반환한다. |
- values() 메서드에서 값(value)은 중복을 허용하기 때문에 Collection타입으로 반환한다.
- ketSet() 메서드에서 키(key)는 중복을 허용하지 않기 때문에 Set타입으로 반환한다.
* Map.Entry Interface
Map.Entry 인터페이스는 Map인터페이스의 내부 인터페이스이다.
- Map에 저장되는 key-value쌍을 다루기 위해 내부적으로 Entry인터페이스를 정의해 놓았다.
- Map 인터페이스를 구현하는 클래스에서는 Map.Entry 인터페이스도 함께 구현해야 한다.
메서드 | 설명 |
boolean equals(Object o) | 동일한 Entry인지 비교한다. |
Object getKey() | Entry의 key 객체를 반환한다. |
Object getValue() | Entry의 value 객체를 반환한다. |
int hashCode() | Entry의 해시코드를 반환한다. |
Object setValue(Object value) | Entry의 value객체를 지정된 객체로 바꾼다. |
반응형
'Java' 카테고리의 다른 글
[JAVA] String Methods (String 클래스 method) (0) | 2021.11.05 |
---|---|
[JAVA] Iterator Interface (0) | 2021.10.14 |
[JAVA] List 정렬(Sort)하기 (feat. Collections.class) (0) | 2021.10.01 |
[JAVA] Comparable Interface vs Comparator Interface (0) | 2021.09.30 |
[JAVA] 배열 정렬(Sort)하기 (feat. Arrays.class) (0) | 2021.09.30 |
댓글