JAVA/자바의 정석

[자바의 정석 - 기초편] 11. (6) HashMap / Hashtable / Collections 컬렉션 클래스 요약

서영22 2023. 12. 13. 00:58

 HashMap & Hashtable - 순서 X, 중복 (키 X, 값 O) 

- Map 인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장

 

 

 

HashMap

 

- Map 인터페이스를 구현하는 대표적인 컬렉션 클래스

 

- HashMap (동기화 X) : Hashtable (동기화 O)의 신버전

 

- 순서를 유지하려면 LinkedHashMap클래스 사용하면 됨

 

 

 

TreeMap

 

- 범위 검색과 정렬에 유리한 컬렉션 클래스

 

- HashMap보다 데이터 추가, 삭제에 시간이 더 걸림

 

 

 

 HashMap의 키와 값 

해싱기법으로 데이터를 저장. 데이터가 많아도 검색이 빠름

키 (key) : 컬렉션 내의 키 중에서 유일해야 함
값 (value) : 키와 달리 데이터의 중복을 허용해야 함

 

 

 

해싱 (hashing)

 

- 해시함수(hash function)로 해시 테이블에 데이터를 저장, 검색

 

1. 키로 해시함수를 호출해서 해시코드를 얻는다
2. 해시코드(해시함수의 반환값)에 대응하는 링크드리스트를 배열에서 찾는다
3. 링크드리스트에서 키와 일치하는 데이터를 찾는다

* 해시함수는 같은 키에 대해 항상 같은 해시코드를 반환해야 함
  서로 다른 키일지라도 같은 값의 해시코드를 반환할 수도 있음

 

 

- 해시테이블은 배열과 링크드 리스트가 조합된 형태

 

 

 

 

HashMap 주요 메서드

 

 

 

< 예제 1 >

 

 

 

 

< 예제 2 >

 

 

 

 

< 예제 3 >

 

 

 

 

 

 Collections 

컬렉션을 위한 메서드(static)를 제공

 

 

1. 컬렉션 채우기, 복사, 정렬, 검색 - fill(), copy(), sort(), binarySearch() 등

 

 

2. 컬렉션의 동기화 - synchronizedXXX()

List syncList = Collections.synchronizedList(new ArrayList(...));
    동기화 된 리스트                                              동기화 되지 않은 리스트

 

 

3. 변경불가 (readOnly) 컬렉션 만들기 - unmodifiableXXX()

 

 

4. 싱글톤 컬렉션 만들기 - singletonXXX()

     객체 1개만 저장

 

 

5. 한 종류의 객체만 저장하는 컬렉션 만들기 - checkedXXX()

List list = new ArrayList();
List checkedList = checkedList(list, String.class)  // String만 저장 가능
checkedList.add("abc");                  // OK
checkedList.add(new Integer(3));   // 에러. ClassCastException발생

 

 

 

< 예제 1 >

 

 

 

 

 컬렉션 클래스 정리 & 요약