지정된 키와 객체(oldValue)가 모두 일치하는 경우에만 새로운 객체(newValue)로 대체
int size()
HashMap에 저장된 요소의 개수를 반환
해싱과 해시함수
- 해싱 : 해시함수(hash function)을 이용해서 데이터를 해시테이블(hash table)에 저장하고 검색하는 기법 - 해시함수는 데이터가 저장되어 있는 곳을 알려 주기 때문에 원하는 데이터를 빠르게 찾을 수 있음 - 해싱을 구현한 컬렉션 클래스 : HashSet, HashMap, Hashtable - 배열과 링크드 리스트의 조합으로 이루어짐
배열과 링크드 리스트의 조합으로 이루어짐
- 구현 과정 ① 저장할 데이터의 키를 해시함수에 넣음 ② 해시함수로부터 배열의 한 요소를 얻게 됨 ③ 그 곳에 연결되어 있는 링크드 리스트에 저장
배열의 인덱스가 n인 요소의 주소 = 배열의 시작주소 + type의 size * n
2. TreeMap
1) TreeMap이란?
- 이진검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장하는 컬렉션 클래스
- 검색과 정렬에 적합
HashMap vs TreeMap
검색 성능 HashMap > TreeMap 범위검색, 정렬 성능 HashMap < TreeMap
- 멀티 쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근할 수 있기 때문에 동기화(synchronization)가 필요함
- Vector, Hashtable 같은 구버전 클래스들은 자체적으로 동기화 처리 기능 -> 성능 떨어뜨림
- 이후 버전 클래스들은 필요한 경우에만 java.util.Collections클래스의 동기화 메서드를 이용하여 동기화처리가 가능하도록 변경함
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)
ex) List syncList = Collections.synchronizedList(new ArrayList(...));
2) 변경불가 컬렉션 만들기
- 변경 불가능한 읽기전용 컬렉션을 만들 수 있음
static Collection unmodifiableCollection(Collection c) static List unmodifiableList(List list) static Set unmodifiableSet(Set s) static Map unmodifiableMap(Map m) static NavigableSet unmodifiableNavigableSet(NavigableSet s) static SortedSet unmodifiableSortedSet(SortedSet s) static NavigableMap unmodifiableNavigableMap(NavigableMap m) static SortedMap unmodifiableSortedMap(SortedMap m)
3) 싱글톤 컬렉션 만들기
- 하나의 객체만을 저장하는 컬렉션을 만들 수 있음
static List singletonList(Object o) static Set singleton(Object o) // singletonSet이 아님! static Map singletonMap(Object key, Object value)
4) 한 종류의 객체만 저장하는 컬렉션 만들기
- 지정된 종류의 객체만 저장하는 컬렉션을 만들 수 있음
static Collection checkedCollection(Collection c, Class type) static List checkedList(List list, Class type) static Set checkedSet(Set s, Class type) static Map checkedMap(Map m, Class keyType, Class valueType) static Queue checkedQueue(Queue queue, Class type) static NavigableSet checkedNavigableSet(NavigableSet s, Class type) static SortedSet checkedSortedSet(SortedSet s, Class type) static NavigableMap checkedNavigableMap(NavigableMap m, Class keyType, Class valueType) static SortedMap checkedSortedMap(SortedMap m, Class keyType, Class valueType)