Tip!
- 객체지향 프로그래밍 다음으로 중요!
- 여러번 반복 ( 빠르게, 전체적으로)
- 실습 중요! (어떻게/언제 사용되는지)
HashMap과 Hashtable - 순서 x, 중복(key x, value o)
HashMap - 순서x , 중복(key 불가, value 가능)
- Map 인터페이스를 구현한 대표적인 컬렉션 클래스
- 키(key) 와 값(value)을 묶어서 하나의 데이터(entry)로 저장한다
- 키(key) : 중복x (ex. ID)
- 값(value) : 중복o (ex. Password)
- 해싱(hashing)을 사용한다 : 많은 양의 데이터를 검색하는데 유용
- 순서를 유지하려면 LinkedHashMap 클래스를 사용하면 된다.
- Entry라는 내부 클래스를 정의하고, Entry 타입의 배열을 선언하고 있다.
- 키(key)와 값(value)을 하나의 클래스로 정의해서 하나의 배열로 다룬다.
Entry[] table;
class Entry {
Object key;
Object value;
}
TreeMap
- ≒ TreeSet
- 범위 검색과 정렬에 유리한 컬렉션 클래스
- HashMap보다 데이터 추가, 삭제에 시간이 더 걸린다.
HashMap 의 키(key)와 값(value)
- 키(key) : 유일 (중복x)
- 값(value) : 중복가능
- 키와 값은 Object타입으로 저장한다. → 어떠한 객체도 저장 가능
- 해싱기법(hashing)으로 데이터를 저장하기 때문에 데이터가 많아도 검색이 빠르다.
해싱(hashing)
- 해싱(hashing) : 해시테이블에 저장된 데이터를 가져오는 과정
- 키(key)로 해시함수를 호출해서 해시코드(배열이 index)를 얻는다.
- 해시코드(해시함수의 반환값)에 대응하는 링크드리스트를 배열에서 찾는다.
- 링크드리스트에서 키와 일치하는 데이터를 찾는다.
- 해시함수는 같은 키(key)에 대해 항상 같은 해시코드를 반환해야 한다.
- 서로 다른 키(key)일지라도 같은 값의 해시코드를 반환할 수도 있다.
'JAVA' 카테고리의 다른 글
애너테이션(annotation) (0) | 2022.12.19 |
---|---|
열거형(enum) (0) | 2022.12.19 |
객체지향프로그래밍(2) - 상속, Object 클래스 (0) | 2022.12.19 |
객체지향프로그래밍 (0) | 2022.12.08 |
배열 Array(1) (1) | 2022.12.08 |