자바 컬렉션 프레임워크(Java Collections Framework)란?List, Set, Map 중 하나를 구현하고 있음.구현한 인터페이스의 이름이 클래스의 이름에 포함되어 있기 때문에 클래스의 이름만으로도 특징을 쉽게 파악할 수 있음.Vector, Stack, Hashtable, Properties와 같은 클래스들은 컬렉션 프레임쿼크 이전부터 존재했던 것들이라 명명법이 다름.Vector, Hashtable을 사용하기보단 새로 만들어진 ArrayList, HashMap을 사용하는 것이 좋음.
인터페이스 List, Set을 구현한 컬렉션 클래스들은 서로 공통된 부분이 많기 때문에인터페이스 Collection을 정의해놨음.인터페이스 Map의 경우 전혀 다른 형태로 컬렉션을 다루기 때문에 같은 상속계층도에 포함되지 않음.Collection 인터페이스.JDK 17 - Collection 메서드
| 메서드 | 반환 타입 | 설명 |
|---|---|---|
add(E e) | boolean | - 지정된 요소를 컬렉션에 추가. |
addAll(Collection<? extends E> c) | boolean | - 지정된 컬렉션의 모든 요소를 이 컬렉션에 추가. |
clear() | void | - 이 컬렉션에서 모든 요소를 제거. |
contains(Object o) | boolean | - 이 컬렉션이 지정된 요소를 포함하고 있으면 true를 반환. |
containsAll(Collection<?> c) | boolean | - 이 컬렉션이 지정된 컬렉션의 모든 요소를 포함하고 있으면 true를 반환. |
equals(Object o) | boolean | - 지정된 객체와 이 컬렉션이 동일한지 비교. |
hashCode() | int | - 이 컬렉션의 해시 코드 값을 반환. |
isEmpty() | boolean | - 이 컬렉션에 요소가 없으면 true를 반환. |
iterator() | Iterator<E> | - 이 컬렉션의 요소들을 순회하는 이터레이터(iterator)를 반환. |
parallelStream() | Stream<E> | - 이 컬렉션을 소스로 하는 병렬 스트림(parallel stream)을 반환. |
remove(Object o) | boolean | - 지정된 요소를 이 컬렉션에서 한 개 제거. |
removeAll(Collection<?> c) | boolean | - 지정된 컬렉션에 포함된 이 컬렉션의 모든 요소를 제거. |
removeIf(Predicate<? super E> filter) | boolean | - 주어진 조건(predicate)을 만족하는 모든 요소를 이 컬렉션에서 제거. |
retainAll(Collection<?> c) | boolean | - 지정된 컬렉션에 포함된 요소들만 남기고, 나머지 요소들을 모두 제거. |
size() | int | - 이 컬렉션에 포함된 요소의 개수를 반환. |
spliterator() | Spliterator<E>ㅤ | - 이 컬렉션의 요소들을 순회하고 분할하는 스플리터레이터(Spliterator)를 생성. |
stream() | Stream<E> | - 이 컬렉션을 소스로 하는 순차 스트림(sequential stream)을 반환. |
toArray() | Object[] | - 이 컬렉션의 모든 요소를 포함하는 Object 타입의 배열을 반환. |
toArray(IntFunction<T[]> generator) | <T> T[] | - 제공된 생성자 함수를 사용하여 이 컬렉션의 모든 요소를 포함하는 배열을 반환. |
toArray(T[] a) | <T> T[] | - 이 컬렉션의 모든 요소를 지정된 배열에 담아 반환. |
List 인터페이스는 중복을 허용하고 저장순서가 유지되는 컬렉션을 구현하는데 사용함.JDK 17 - List 메서드
| 메서드 | 반환 타입 | 설명 |
|---|---|---|
add(int index, E element) | void | - 지정된 위치에 특정 요소를 삽입. |
add(E e) | boolean | - 리스트의 끝에 지정된 요소를 추가. |
addAll(int index, Collection<? extends E> c) ㅤ ㅤ ㅤ ㅤ ㅤ ㅤ ㅤ ㅤ ㅤ | boolean | - 지정된 위치에 지정된 컬렉션의 모든 요소를 삽입. |
addAll(Collection<? extends E> c) | boolean | - 리스트의 끝에 지정된 컬렉션의 모든 요소를 추가. |
get(int index) | E | - 지정된 위치에 있는 요소를 반환. |
indexOf(Object o) | int | - 리스트에서 지정된 요소가 처음 나타나는 인덱스를 반환. 요소가 없으면 -1을 반환. |
lastIndexOf(Object o) | int | - 리스트에서 지정된 요소가 마지막으로 나타나는 인덱스를 반환. 요소가 없으면 -1을 반환. |
listIterator() | ListIterator<E>ㅤㅤ ㅤ ㅤ ㅤ ㅤ | - 리스트의 요소들을 순차적으로 순회하는 리스트 이터레이터를 반환. |
remove(int index) | E | - 지정된 위치에 있는 요소를 제거하고, 제거된 요소를 반환. |
remove(Object o) | boolean | - 리스트에서 지정된 요소의 첫 번째 인스턴스를 제거. |
set(int index, E element) | E | - 지정된 위치에 있는 요소를 지정된 요소로 대체하고, 이전 요소를 반환. |
sort(Comparator<? super E> c) | void | - 지정된 Comparator의 순서에 따라 이 리스트를 정렬. |
subList(int fromIndex, int toIndex) | List<E> | - fromIndex(포함)부터 toIndex(미포함)까지의 객체를 반환. |
Set 인터페이스는 중복을 허용하지 않고 저장순서가 유지되지 않는 컬렉션 클래스를 구현하는데 사용함.JDK 17 - Set 메서드
| 메서드 | 반환 타입 | 설명 |
|---|---|---|
add(E e) | boolean | - 지정된 요소를 Set에 추가. 이미 존재하는 요소는 중복해서 추가되지 않음. |
addAll(Collection<? extends E> c) | boolean | - 지정된 컬렉션의 모든 요소를 이 Set에 추가. |
clear() | void | - 이 Set의 모든 요소를 제거. |
contains(Object o) | boolean | - 이 Set이 지정된 요소를 포함하고 있으면 true를 반환. |
isEmpty() | boolean | - 이 Set에 요소가 없으면 true를 반환. |
remove(Object o) | boolean | - 지정된 요소를 이 Set에서 제거. |
size() | int | - 이 Set에 포함된 요소의 개수를 반환. |
iterator() | Iterator<E> | - 이 Set의 요소들을 순회하는 이터레이터(iterator)를 반환. |
stream() | Stream<E> | - 이 Set을 소스로 하는 순차 스트림(sequential stream)을 반환. |
Map 인터페이스는 키(key)와 값(value)을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스를 구현하는데 사용함.JDK 17 - Map 메서드
| 메서드 | 반환 타입 | 설명 |
|---|---|---|
clear() | void | - 모든 객체를 제거. |
containsKey(Object key) | boolean | - 지정된 key 객체와 일치하는 Map의 key객체가 있는지 확인 |
containsValue(Object value) | boolean | - 지정된 value 객체와 일치하는 Map의 value 객체가 있는지 확인. |
entrySet() | Set<Map.Entry<K,V>> ㅤ ㅤ | - Map에 저장되어 있는 key-value쌍을 Map.Entry 타입의 객체로 저장한 Set으로 반환. |
get(Object key) | V | - 지정한 key 객체에 대응하는 value객체를 찾아서 반환. |
getOrDefault(Object key, V defaultValue) | V | - 지정한 키에 대응하는 값 또는 기본값 반환. |
isEmpty() | boolean | - Map이 비어있는지 확인. |
keySet() | Set<K> | - Map에 저장된 모든 key 객체를 반환함. |
put(K key, V value) | V | - Map에 value 객체를 key 객체에 연결(mapping)하여 저장. |
putAll(Map<? extends K,? extends V> m) | void | - 지정된 Map의 모든 key-value쌍을 추가. |
putIfAbsent(K key, V value) | V | - key가 존재하지 않을 때만 value 연결 |
remove(Object key) | V | - key에 대한 매핑 제거. |
remove(Object key, Object value) | boolean | - key와 value가 모두 일치할 때 매핑 제거. |
replace(K key, V value) | V | - key에 매핑된 value 대체. |
size() | int | - key-value 매핑의 수를 반환. |
values() | Collection<V> | - Map에 저장된 모든 value 객체를 반환. |
values()의 반환타입이 Collection이고 keySet()의 반환타입이 Set.값(value)의 중복은 허용하기 때문에 Collection 타입으로 반환하고키(key)의 중복은 허용하지 않기 때문에 Set 타입으로 반환 하는거임.Map.Entry 인터페이스는 Map 인터페이스의 내부 인터페이스임.내부 인터페이스(inner interface)를 정의하는 것이 가능함.| 메서드 | 반환 타입 | 설명 |
|---|---|---|
copyOf(Map.Entry<? extends K,? extends V> e)ㅤ ㅤ | Map.Entry<K,V>ㅤ ㅤ | - 주어진 Map.Entry의 복사본을 반환. |
equals(Object o) | boolean | - 지정된 객체와 이 엔트리(entry)의 동등성을 비교. |
getKey() | K | - 이 엔트리에 해당하는 key 객체를 반환. |
getValue() | V | - 이 엔트리에 해당하는 value 객체를 반환. |
hashCode() | int | - 이 맵 엔트리의 해시 코드 값을 반환. |
setValue(V value) | V | - 이 엔트리에 해당하는 객체를 지정된 객체로 교체. |
| 인터페이스 | 특징 |
|---|---|
| List | - 순서가 있는 데이터 집합. - 데이터의 중복을 허용함. - 구현 클래스 : ArrayList, LinkedList, Stack, Vector 등. |
| Set | - 순서를 유지하지 않는 데이터 집합. - 데이터의 중복을 허용하지 않음. 구현 클래스 : HashSet, TreeSet 등. |
| Map | - 키(key)와 값(value)의 쌍(pair)으로 이루어진 데이터 집합. - 순서가 유지되지 않고 키는 중복을 허용하지 않지만 값은 중복을 허용함. - 구현 클래스 : HashMap, TreeMap, HashTable, Properties 등. |