-
Java: 컬렉션 프레임워크(Collection Framework) 개요각종 학습 요약/Java 2022. 5. 17. 13:41
Java: 컬렉션 프레임워크(Collection Framework)
컬렉션 프레임워크란?
데이터를 저장하기 위한 유용한 자료구조들을 구현해놓은 자바 클래스와 인터페이스의 집합.
주요 인터페이스(List, Map, Set)의 특징
- List: 순서를 유지하는 선형적 구조. 마치 배열과도 비슷하다.
- Set: 순서 없이 값만 들어있는 구조. 대개 순서를 보장하지 않고, 중복 개념이 없다(덮어씌워짐).
- Map: 순서 없이 키와 값이 들어있는 구조. 대개 순서를 보장하지 않고, 중복 개념이 없다(덮어씌워짐).
List와 Set
List 주요 메서드
Object set(int index, Object o), addAll(int index, Collection c)
: 지정된 index에 삽입한다Object get(int index)
: 지정한 index 요소를 반환한다int indexOf(Object o), lastIndexOf(Object o)
: 정방향/역방향으로 탐색하여 위치를 반환한다List subList(int from, int to)
: from부터 to 인덱스를 리스트로 반환void sort(Comparator c)
: 주어진 비교자(Comparator)로 비교하여 정렬List / Set 공통 주요 메서드
void add(Object o), addAll(Collection c)
: 값을 넣을때 사용boolean contains(Object o), containsAll(Collections c)
: 값을 찾을 때 사용(저장되어 있는지)Iterator iterator()
: 반복자(iterator)를 반환boolean isEmpty()
: 비어있는지 확인int size()
: 크기 반환void clear()
: 컬렉션을 비운다boolean remove(Object o), removeAll(Collection c)
: 요소를 삭제한다Object[] toArray(), toArray(Object[] oa)
: array로 반환한다(또는 oa에 담는다)List 주요 구현 클래스
ArrayList : 배열과 유사하나 크기가 유동적이다. 조회에 유리한 구조.
LinkedList : ArrayList와 기능적으로 유사하나, 요소의 index가 특정되어있지 않고 매 요소가 자신의 앞 요소 참조값 / 뒷 요소 참조값을 기억하면서 순차적으로 연결되어 있다. 삽입/삭제에 유리한 구조.Set 주요 구현 클래스
HashSet : 해시 값으로 Set을 구현한 클래스
LinkedHashSet : 앞/뒤 요소를 기억하여 순서를 알 수 있는 HashSet
TreeSet : 이진탐색이 가능하여 정렬을 할 수 있는 클래스Map
Map 주요 메서드
Object put(Object key, Object value)
: 주어진 키로 주어진 값을 저장. 새로 입력된 키면 null을 반환하고 해당 키로 값이 존재했었다면 이전 값 리턴.Object get(Object key)
: 주어진 키의 값을 리턴boolean containsKey(Object key)
: 주어진 키가 있는지 확인boolean containsValue(Object value)
: 주어진 값이 있는지 확인Set entrySet()
: Map.Entry 객체(키/값 쌍으로 구성된 객체)를 Set타입으로 반환Set keySet()
: 모든 키를 Set타입으로 반환Collection values()
: 모든 값을 Collection타입으로 반환boolean isEmpty()
: 비어있는지 확인int size()
: 키/값 쌍의 개수를 반환Object remove(Object key)
: 해당 키의 키/값 쌍을 삭제하고 값을 반환void clear()
: 모든 내용을 삭제Map 주요 구현 클래스
HashMap : 해시값으로 Map을 구현한 클래스
LinkedHashMap : 앞/뒤 요소를 기억하여 순서를 알 수 있는 HashMap
TreeMap : 이진탐색이 가능하여 정렬을 할 수 있는 클래스컬렉션 프레임워크 계층도
주의 : 위 계층도는 geeksforgeeks의 프레임워크 계층도를 참고하여 그렸으나, 잘못된 부분이 있습니다. LinkedHashMap의 조상을 확인하던 중 알게 되었습니다. 아직 수정하지는 못했지만, 위의 그림처럼 잘못된 정보가 웹 상에 많은 것 같습니다(잘못된 부분을 확인하시라는 의미에서 지우지 않고 남겨둔 것입니다). 주의하시고, 계층은 직접 확인하거나 공식문서를 참고하시길 추천드립니다.
'각종 학습 요약 > Java' 카테고리의 다른 글
Java: 람다와 스트림의 기본적인 이해와 사용법 - 1 (0) 2022.05.19 Java: Enum 클래스의 기본적인 이해 (0) 2022.05.19 Java: 내부 클래스(Inner Class)의 기본적인 이해 (4) 2022.05.18 Java: 제네릭 Generic (4) 2022.05.17 추상클래스와 인터페이스의 차이와 선택 기준 (0) 2022.05.13 # Java의 상속 개념 : inheritance, composite (2) 2022.05.12