[Java] 1. Collections Framework
글 작성자: SeoArc
Collections Framework?
JDK1.2부터 Collections Framework가 등장하면서 다양한 종류의 컬렉션 클래스가 추가되고 표준화된 방식으로 다룰 수 있도록 체계화되었다.
Collections Framework에서는 컬렉션데이터 그룹을 크게 3가지 타입이 존재한다고 인식하고 각 컬렉션을 다루는데 필요한 기능을 가진 3개의 인터페이스를 정의하였다. 그리고 인터페이스 List와 Set의 공통된 부분을 다시 뽑아서 새로운 인터페이스인 Collection을 추가로 정의하였다.
각 인터페이스 특징
List
- 순서가 있는 데이터의 집합, 데이터의 중복을 허용함
- ArrayList, LinkedList, Stack, Vector 등
Set
- 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않음
- HashSet, TreeSet 등
Map
- 키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합, 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.
- HashMap, TreeMap, Hashtable, Properties 등
Collection Interface
메서드 | 설명 |
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의 객체를 저장해서 반환한다. |
Iterator 인터페이스는 컬렉션에 포함된 객체들에 접근할 수 있는 방법을 제공한다.
List Interface
메서드 | 설명 |
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 toIndex) | 지정된 범위(fromIndex부터 toIndex)에 있는 객체를 반환한다. |
Set Interface
Map Interface
메서드 | 설명 |
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객체를 반환한다. |
Map.Entry Interface
Map.Entry 인터페이스는 Map 인터페이스의 내부 인터페이스이다. 내부 클래스와 같이 인터페이스도 내부 인터페이스를 정의하는 것이 가능하다.
Map에 저장되는 key-value 쌍을 다루기 위해 내부적으로 Entry 인터페이스를 정의해 놓았다. 이것은 보다 객체지향적으로 설계하도록 유도하기 위한 것으로 Map 인터페이스를 구현하는 클래스에서는 Map.Entry 인터페이스도 함께 구현해야한다.
public interface Map {
...
interface Entry<K, V> {
K getKey();
V getValue();
V setValue(V value);
boolean equals(Object o);
int hashCode();
...
}
}
메서드 | 설명 |
boolean equals(Object o) | 동일한 Entry인지 확인한다. |
Object getKey() | Entry의 key 객체를 반환한다. |
Object getValue() | Entry의 value 객체를 반환한다. |
int hashCode() | Entry의 해시코드를 반환한다. |
Object setValue(Object value) | Entry의 value 객체를 지정된 객체로 바꾼다. |
'Language > Java' 카테고리의 다른 글
[Java] 아무 생각 없이 생성했는데 동일한 객체? (0) | 2023.03.09 |
---|---|
[Java] abstract class vs interface (0) | 2023.01.20 |
[Java] stream vs for (1) | 2023.01.17 |
[Java] 3. Iterator (0) | 2022.08.17 |
[Java] 2. List (0) | 2022.08.12 |
댓글
이 글 공유하기
다른 글
-
[Java] abstract class vs interface
[Java] abstract class vs interface
2023.01.20 -
[Java] stream vs for
[Java] stream vs for
2023.01.17 -
[Java] 3. Iterator
[Java] 3. Iterator
2022.08.17 -
[Java] 2. List
[Java] 2. List
2022.08.12