데이터 군(群)을 저장하는 클래스들을 표준화한 설계
List, Set, Map
인터페이스 | 데이터 순서 | 중복 | 구현클래스 |
---|---|---|---|
List | 유지 | 허용 | ArrayList, LinkedList, (Stack, Vector) 등 |
Set | x | 미허용 | HashSet, TreeSet 등 |
Map | x | 미허용 | HashMap,TreeMap, (Hashtable, Properties)등 |
Stack, Vector 보다는 ArrayList, LinkedList 사용 추천(collection framework이 만들어지기 이전부터 존재)
List
Set
Map
values()
: 리턴타입이 Collection
keySet()
: 리턴타입이 Set
Queue
iterator()
: Iterator(Iterator를 구현한 클래스의 인스턴스)를 반환☑️ 사용 예시 : ArrayList에 저장된 요소들을 출력
Collection c = new ArrayList(); // 다른 컬렉션으로 변경시 이 부분만 수정
Iterator it = c.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
☑️ map
iterator()
호출Map map = new HashMap();
...
Iterator it = map.entrySet().iterator();
Iterator의 구버전
컬렉션 요소에 접근시 Iterator는 단방향이동만 가능
↔️ ListIterator : 양방향 이동 가능
관련 API : https://docs.oracle.com/javase/7/docs/api/
Comparable : 기본 정렬기준을 구현하는데 사용
(= 컬렉션을 정렬sort()
하는데 필요한 메서드를 정의)
Comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용
자가 균형 이진 탐색 트리로서 연관 배열 등을 구현하는데 쓰이는 자료 구조
(자가 균형 이진 탐색 트리 : 노드의 삽입과 삭제가 이루어질 때 자동으로 균형 트리를 유지하는 이진 탐색 트리 - AVL, 레드-블랙 트리, 이진 힙)
☑️ 레드-블랙 트리의 조건
1. 모든 노드는 빨간색 혹은 검은색이다.
2. 루트 노드는 검은색이다(그러나 새로운 노드는 항상 빨간색으로 삽입)
3. 모든 리프 노드(NIL)들은 검은색이다.
(NIL : null leaf, 자료를 갖지 않고 트리의 끝을 나타내는 노드)
4. 빨간색 노드의 자식은 검은색이다.
== No Double Red(빨간색 노드가 연속으로 나올 수 없다)
5. 모든 리프 노드에서 Black Depth는 같다.
== 리프노드에서 루트 노드까지 가는 경로에서 만나는 검은색 노드의 개수가 같다.
☑️ 데이터 삽입 과정
HashMap - Hashtable
== ArrayList - Vector
해싱(Hashing) : 데이터를 해시테이블(hash table)에 저장하고 검색하는 기법
해시 함수(Hash Function) : 데이터를 효율적으로 관리하기 위해서 임의의 길이의 데이터 -> 고정된 길이의 데이터로 매핑하는 함수
ex) 주민번호 맨 앞자리의 생년을 기준으로 데이터 분류 - 00년대, 10년대, ...
HashMap vs TreeMap
HashMap | TreeMap | |
---|---|---|
유용한 상황 | 검색 | 범위검색/정렬 |
Hashtable을 상속받아 구현한 것
Hashtable | Properties | |
---|---|---|
데이터 저장 형태 | (Object, Object) | (String, String) -> 보다 단순화된 컬렉션 클래스 |
synchronized~
)static Collection synchronizedCollection(Collection c)
static List synchronizedList(List list)
static Set synchronizedSet(Set s)
static Map synchronizedMap(Map m)
static SortedSet synchronizedSortedSet(SortedSet s)
static SortedMap synchronizedSortedMap(SortedMap m)
unmodifiable~
static Set unmodifiableSet(Set s)
static Map unmodifiableMap(Map m)
싱글톤 컬렉션 : 하나의 객체만을 저장하는 컬랙션
singleton~
ex)
static List singletonList(Object o)
static Set singleton(Object o) // singletonSet이 아님
static Map singletonMap(Object key, Object value)
checked
List list = new ArrayList();
List checkedList = checkedList (list, String, class); // String만 저장 가능
checkedList.add("abc"); // OK.
checkedList.add(new Integer(3)); // 에 러 . ClassCastException