[Collection Framework]
- Data Structure 종류의 형태들을 자바 클래스로 구현한 모음
- Collection Framework에 담을 수 있는 데이터는 Object(객체) 뿐이기 때문에 자바의 primitive 타입(int, double 등) 을 wrapper 타입으로 변환하여 Integer 객체나 Double 객체로 Boxing해서 저장해야 함
- Collection 인터페이스와 Map 인터페이스로 나뉨
[Colleciton Framework 종류]
1. Iterable 인터페이스
- 최상위 인터페이스
메서드 | 설 명 |
default void forEach(Consumer<? super T> action) | 함수형 프로그래밍 전용 루프 메서드 |
Iterator<T> iterator() | 컬렉션에서 이터레이터를 구현 |
default Spliterator<T> splierator() | 파이프라이닝 관련 메소드 |
2. Collection 인터페이스
- List, Set, Queue에 상속을 하는 실질적 최상위 컬렉션 타입
- 업캐스팅으로 다양한 종류의 컬렉션 자료형을 받아 자료를 삽입, 삭제, 탐색 기능 제공 (다형성 개념)
메서드 | 설 명 |
boolean add(Object o) boolean addAll(Collection c) |
지정된 객체(o) 또는 Collection(c)의 객체들을 Collection에 추가 |
boolean contains(Object o) boolean containsAll(Collection c) |
지정된 객체(o) 또는 Collection의 객체들이 Collection에 포함되어 있는지 확인 |
boolean remove(Object o) boolean removeAll(Collection c) |
지정된 객체 또는 지정된 Collection에 포함된 객체들을 삭제 |
boolean retainAll(Collection c) | 지정된 Collection에 포함된 객체만을 남기고 다른 객체들은 Collection에서 삭제. 사실상 removeAll 의 대칭 버전. (교집합 동작) 이 작업으로 Collection에 변화가 있으면 true를 없으면 false를 반환 |
void clear() | Collection의 모든 객체를 삭제 |
boolean equals(Object o) | 동일한 Collection인지 비교 |
int hashCode() | Collection의 hash code를 반환 |
boolean isEmpty() | Collection이 비어있는지 확인 |
Iterator iterator() | Collection의 iterator를 얻어서 반환 (상위 Iterable 인터페이스를 상속) |
int size() | Collection에 저장된 객체의 개수를 반환 |
Object[] toArray() | Collection에 저장된 객체를 객체배열(Object[])로 반환 |
Object[] toArray(Object[] a) | 지정된 배열에 Collection의 객체를 저장해서 반환 |
3. List 인터페이스
- 저장 순서가 유지되는 컬렉션 구현할 때 사용
- 중복 저장 허용
- ArrayList / LinkedList / Vector / Stack
메서드 | 설 명 |
void add(int index, Object element) boolean addAll(int index, Collection c) |
지정된 위치(index)에 객체(element) 또는 컬렉션에 포함된 객체들을 추가한다. |
Object remove(int index) | 지정된 위치(index)에 있는 객체를 삭제하고 삭제된 객체를 반환한다. |
Object get(int index) | 지정된 위치(index)에 있는 객체를 반환한다. |
Object set(int index, Object element) | 지정된 위치(index)에 객체(element)를 저장한다. |
int indexOf(Object o) | 지정된 객체의 위치(index)를 반환한다. (순방향) |
int lastIndexOf(Object o) | 지정된 객체의 위치(index)를 반환한다. (역방향) |
List subList(int fromIndex, int toIndex) | 지정된 범위(from ~ to)에 있는 객체를 반환한다. |
ListIterator listIterator() ListIterator listIterator(int index) |
List의 객체에 접근할 수 있는 ListIterator를 반환한다. |
void sort(Comparator c) | 지정된 비교자(comparator)로 List를 정렬한다. |
4. Queue 인터페이스
- 선입선출(FIFO) 구조
- 자바에서 Queue는 인터페이스고 필요에 따라 큐 컬렉션 골라 사용 가능
- PriorityQueue / Dequeue / ArrayDeque / LinkedList
메서드 | 설 명 |
boolean add(Object o) | 지정된 객체를 Queue에 추가 저장공간 부족 시 IllegalStateException 발생 |
Object remove() | Queue에서 객체를 꺼내 반환 비어있을 경우 NoSuchElementException 발생 |
Object element() | 삭제없이 요소를 읽어온다 비어있을 경우 NosuchElementException 발생 |
boolean offer(Object o) | Queue에 객체를 저장 |
Object poll() | Queue에서 객체를 꺼내서 반환 비어있을 경우 null을 반환 |
Object peek() | 삭제없이 요소를 읽어온다 비어있을 경우 null을 반환 |
5. Set 인터페이스
- 중복 허용하지 않고 순서 유지하지 않음
- 순서가 없으니 get(index) 사용 불가
- 중복 허용하지 않아 null도 한개만 가능
- HashSet / LinkedHashSet(순서o) / TreeSet
메서드 | 설명 |
boolean add(E e) | 주어진 객체를 저장 후 성공적이면 true를 중복 객체면 false를 리턴합니다. |
boolean contains(Object o) | 주어진 객체가 저장되어있는지 여부를 리턴합니다. |
Iterator<E> iterator() | 저장된 객체를 한번씩 가져오는 반복자를 리턴합니다. |
isEmpty() | 컬렉션이 비어있는지 조사합니다. |
int Size() | 저장되어 있는 전체 객체수를 리턴합니다. |
void clear() | 저장된 모든 객체를 삭제합니다. |
boolean remove(Object o) | 주어진 객체를 삭제합니다. |
6. Map 인터페이스
- Key와 Value로 이루어진 데이터 집합
- Value는 중복 가능하나 Key는 고유해야 함
- 저장순서 유지되지 않음
- Key값을 반환할때 Set 인터페이스 타입으로 반환하고, Value값을 반환할때 Collection 타입으로 반환
값(value)은 중복을 허용하기 때문에 Collection 타입으로 반환
키(key)는 중복을 허용하지 않기 때문에 Set 타입으로 반환
- HashMap / LinkedHashMap / Hashtable / TreeMap
추상 메서드 | 설명 |
void clear() | Map의 모든 객체를 삭제 |
boolean containsKey(Object key) | 지정된 key객체와 일치하는 객체가 있는지 확인 |
boolean containsValue(Object value) | 지정된 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에 key객체와 value객체를 연결(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 Collections Framework 종류 💯 총정리
Java Collection Framework 자바 새내기분들은 컬렉션 프레임워크라는 단어에 뭔가 거창하고 어려운 느낌이 들수 있겠지만, 그냥 자료 구조(Data Structure) 종류의 형태들을 자바 클래스로 구현한 모음집
inpa.tistory.com
'개발언어 > JAVA' 카테고리의 다른 글
[JAVA] JVM (Java Virtual Machine) / Garbage Collector (1) | 2024.11.26 |
---|