Java
Java Collection Framework
dev-rootable
2024. 5. 8. 12:32
❓ Collection Framework란?
Java에서 데이터를 저장하는 기본 자료구조들을 한 곳에 모아 관리하고 편리하게 사용하기 위해 제공하는 인터페이스
🗨 Collection
여러 요소들을 담을 수 있는 자료구조로서 다수의 데이터 그룹 또는 컨테이너(Container)라고도 부른다.
배열은 다음과 같은 단점이 있다.
- 최초 크기가 할당된 이후 변경 불가
- 같은 기본형 데이터 자료형만 저장
- 요소의 삽입/삭제가 어려움
컬렉션은 배열의 단점들을 해소하기 위해 등장했다.
😀 장점
- 인터페이스와 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있기 때문에 사용법을 익히기에 편리하고 재사용성이
높다. - 이미 구현되어 있는 API를 사용하면 되므로 새로운 API를 익히고 설계하는 시간이 줄어든다.
- 관련 없는 API 간의 상호 운용성을 제공 (상위 인터페이스 타입으로 업캐스팅하여 사용)
📝 호환성
컬렉션 프레임워크에 저장할 수 있는 데이터는 오로지 객체(Object) 뿐이다. 객체를 저장한다는 것은 곧 주소 값을
저장한다는 의미이므로 null도 저장이 가능하다.
primitive 타입을 저장하고 싶다면 박싱(Boxing)을 통해 wrapper 타입으로 변환하여 저장해야 한다.
🪐 컬렉션 프레임워크 종류
Interface | 순서 | 중복 | 특징 | 예시 | 구현 클래스 |
List | O | O | - | 대기자 명단 | ArrayList, LinkedList, Vector, Stack |
Set | X | X | - | 양의 정수집합, 소수의 집합 |
HashSet, TreeSet |
Map | X | Key 중복 불가, Value 중복 가능 | Key-Value 쌍 구성 | 우편번호, 지역번호(전화번호) | HashMap, TreeMap, HashTable, LinkedHashMap, Properties |
📚 Collection 인터페이스 메서드
Method | Description |
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(c)의 객체들이 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의 객체를 저장해서 |
🔍 Iterable 인터페이스
컬렉션들의 최상위 인터페이스로 자료들을 순회할 때 사용하는 Iterator 객체를 관리하는 인터페이스다.
Method | Description |
default void forEach(Consumer<? super T> action) | 함수형 프로그래밍 전용 루프 메서드 |
Iterator<T> iterator() | 컬렉션에서 이터레이터를 구현 |
default Spliterator<T> spliterator() | 파이프라이닝 관련 메서드 |
📝 Map은 Iterable 인터페이스를 상속받지 않아 위 메서드가 구현되어 있지 않다. 따라서 직접적으로 Map 컬렉션을 순회할 수 없고 Stream을 사용하거나 간접적으로 Collection으로 반환하여 루프문으로 순회하는 식을 이용한다.
References:
[Java] Collection 정리_1
[Java] Collection 정리_1 : 목록과 관련된 컬랙션 프레임워크
velog.io
🧱 Java Collections Framework 종류 💯 총정리
Java Collection Framework 자바 새내기분들은 컬렉션 프레임워크라는 단어에 뭔가 거창하고 어려운 느낌이 들수 있겠지만, 그냥 자료 구조(Data Structure) 종류의 형태들을 자바 클래스로 구현한 모음집
inpa.tistory.com