Hash
해시란 단방향 암호화 기법인 해시함수를 사용하여 새성된 고정된 길이의 비트열을 의미한다.
단방향 암호화는 암호화는 가능하지만 복호화는 불가능하다!
변경 전 원래 데이터 값을 키(key), 변경 후 데이터 값을 해시 값(Hash Value)라고 한다.
변환 후 변환된 값이 중복되는 경우가 발생할 수 있는데 이를 ‘해시충돌’이라고 한다.
이를 해결하기 위해서 체이닝, 개방 주소법 등을 사용할 수 있다.
Hash Table, Hash Map
해시함수를 사용하여 키를 해시값으로 매핑하고 이 해시값을 색인(Index) 혹은 주소 삼아 데이터 값을 키와 함께 저장하는 자료구조를 Hash Table 또는 Hash Map이라 한다.
하지만 Java에서는 Hash Table ≠ Hash Map이다.
Hash Table
HashTable은 모든 Data 변경 메소드는 syncronized 선언이 되어 있다.
즉, 메소드 호출 전 스레드간 동기화 락을 통해 멀티 스레드 환경에서 데이터의 무결성을 보장한다.
또한 HashMap이 key에 null을 허용하지만 HashTable의 경우 key에 null을 허용하지 않는다.