컬렉션 프레임워크
자바의 컬렉션 프레임워크 그룹에는 크게 3가지 타입이 존재한다고 볼 수 있다.
List와 Set, 그리고 Map이다.
그리고 List와 Set의 공통된 부분을 다시 뽑아서 Collection 인터페이스를 추가로 정의하였다.
인터페이스 | 특징 | ||
List | 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. | ||
ArrayList, LinkedList, Stack, Vector 등 | |||
Set | 순서를 유지하지 않는 데이터의 집단. 데이터의 중복을 허용하지 않는다. | ||
HashSet, TreeSet 등 | |||
Map | 키(Key) 와 값(Value)의 쌍(pair)으로 이루어진 데이터의 집합. 순서는 유지하지 않으며, 키는 중복이 불가하나 값은 중복을 허용한다. |
||
HashMap, TreeMap, Hashtable, Properties 등 |
Collection 인터페이스
Collection 인터페이스에 다양한 메서드들이 저장되어 있으나 몇개만 확인해보도록 하겠다.
메서드 | 설명 |
boolean add(Object o) boolean addAll(Collection c) |
지정된 객체 혹은 Collection의 객체들을 추가한다 |
void clear() | 모든 객체를 삭제한다. |
boolean contains(Object o) boolean containsAll(Collection c) |
지정된 객체 혹은 Collection의 객체들이 Collection에 포함되어 있는지 확인한다. |
boolean equals(Object o) | 동일한 Collection인지 확인한다. |
boolean isEmpty() | 비어있는 컬렉션인지 확인한다. |
boolean remove(Object o) | 지정된 객체를 삭제한다. |
boolean removeAll(Collection c) | 지정된 Collection에 포함된 객체들을 삭제한다. |
boolean retainAll(Collection c) | 지정된 Collection에 포함된 객체만을 남기고 다른 객체들은 삭제한다. 이 작업으로 인해 Collection에 변화가 있으면 true, 없으면 false를 반환한다. |
int size() | 객체의 수를 반환한다 |
Object[] toArray() | 객체배열로 반환한다. |
Object[] toArray(Object[] a) | 지정된 배열에 Collection의 객체들을 저장해서 반환한다. |
Stream 관련 메서드들은 Stream 글에서 다루도록 하겠다 :D
[참고] Collection Vs Collections
Collection은 인터페이스오 Collections는 클래스이다.
Colletions는 Colletion Framework와 관련된 기능들을 제공한다. (최소, 최댓값 구하기 등...)
다음에 기회가 된다면 정리해서 올려야겠다 :D
List 인터페이스
리스트 인터페이스는 중복을 허용하면서 저장순서가 유지되는 컬렉션을 구현하는데 사용된다.
메서드 | 설명 |
void add(int index, Object element) void addAll(int index, Collection c) |
지정된 위치에 객체 또는 컬렉션에 포함된 객체들을 추가한다. |
Object get(int index) | 지정된 위치에 있는 객체를 반환한다. |
int IndexOf(Object o) | 지정된 객체의 위치를 반환한다. (첫 번째 요소부터 탐색하여 처음으로 나온 객체의 index를 반환) |
int lastIndexOf(Object o) | 지정된 객체의 위치를 반환한다. (마지막부터 역방향으로 탐색) |
ListIterator listIterator() ListIterator listIterator(int index) |
List의 객체에 접근할 수 있는 ListIterator을 반환한다. (index를 설정할 경우 인덱스의 위치부터 시작하는 ListIterator을 반환한다) |
Object remove(int index) | 지정된 위치에 있는 객체를 삭제하도고, 삭제된 객체를 반환한다. |
Object set(int index, Object element) | 지정된 위치에 객체를 저장한다. |
void sort(Comparator c) | 지정된 비교자로 정렬한다. |
List subList(int fromIndex, int toIndex) | 지정된 범위에 있는 객체를 반환한다. |
Set 인터페이스
Set인터페이스는 중복을 허용하지 않고 저장순서가 유지되지 않는 컬렉션 클래스를 구현하는데 사용된다.
Set 인터페이스를 구현한 클래스로는 HashSet, TreeSet 등이 있다.
Collection 인터페이스의 메소드와 동일하다.
메서드 | 설명 |
boolean add(Object o) boolean addAll(Collection c) |
지정된 객체 혹은 Collection의 객체들을 추가한다 |
void clear() | 모든 객체를 삭제한다. |
boolean contains(Object o) boolean containsAll(Collection c) |
지정된 객체 혹은 Collection의 객체들이 Collection에 포함되어 있는지 확인한다. |
boolean equals(Object o) | 동일한 Collection인지 확인한다. |
boolean isEmpty() | 비어있는 컬렉션인지 확인한다. |
boolean remove(Object o) | 지정된 객체를 삭제한다. |
boolean removeAll(Collection c) | 지정된 Collection에 포함된 객체들을 삭제한다. |
boolean retainAll(Collection c) | 지정된 Collection에 포함된 객체만을 남기고 다른 객체들은 삭제한다. 이 작업으로 인해 Collection에 변화가 있으면 true, 없으면 false를 반환한다. |
int size() | 객체의 수를 반환한다 |
Object[] toArray() | 객체배열로 반환한다. |
Object[] toArray(Object[] a) | 지정된 배열에 Collection의 객체들을 저장해서 반환한다. |
Map 인터페이스
Map 인터페이스는 키와 값을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스를 구현하는 데 사용된다. 키는 중복될 수 없지만 값은 중복은 허용한다.
기존에 저장된 데이터와 중복된 키와 값을 저장하면, 기존 값은 없어지고 마지막에 저장한 값이 남으니 유의하자.
Map 인터페이스를 구현한 클래스로는 Hashtable, HashMap, LinkedHashMap, SortedMap, TreeMap 등이 있다.
메서드 | 설명 |
void clear() | 모든 객체를 삭제한다. |
boolean containsKey(Object key) boolean containsValue(Object value) |
지정된 key객체(혹은 value 객체)와 일치하는 Map의 key(혹은 value)가 있는지 확인한다. |
Set entrySet() | Map에 저장되어 있는 key-value의 쌍을 Map.Entry타입의 객체로 저장한 Set으로 반환한다. |
boolean equals(Object o) | 동일한 Map인지 확인한다. |
Object get(Object key) | key에 대응하는 value를 반환한다. |
boolean isEmpty() | 비어있는 Map인지 확인한다. |
Set keySet() | key의 Set을 반환한다. |
Object put(Object key, Object value) | key와 value를 저장한다. |
void putAll(Map t) | Map 추가한다. |
boolean remove(Object key) | 지정된 key에 해당하는 key-value를 삭제한다. |
Collection values() | Map에 저장된 모든 value 객체를 반환한다. |
values()에서는 반환값이 Collection이고, keySet()에서는 Set이다.
📔 Reference
[JAVA의 정석 기초편 - 남궁성]
'☕️ Java > 기본' 카테고리의 다른 글
[JAVA] LinkedList에 대하여 (ArrayList와의 차이) (0) | 2021.12.17 |
---|---|
[JAVA] ArrayList에 대하여 (0) | 2021.12.17 |
[JAVA] List 정렬하기 (ArrayList, LinkedList 등) (0) | 2021.12.16 |
[JAVA] Stream의 toList()를 사용하여 ArrayList로 형변환할 때 발생하는 오류 (0) | 2021.12.16 |
[JAVA] 배열에서 ArrayList, ArrayList에서 배열로 (0) | 2021.12.16 |