key 와 value를 이용해 데이터를 저장하는 자료 구조
HashTable을 베이스로 하여 Collections의 Map 인터페이스를 implement하였다.key와 value 에 null 허용
unsynchronized
여러 쓰레드에서 동시에 같은 HashMap에 접근하여 값을 수정하게 되면 의도한 결과와 다른 결과를 볼 수 있다..
// 멀티 스레드 환경에서 사용시 권장 방법 (java docs 참고)
Map m = Collections.synchronizedMap(new HashMap(...));

배열과 LinkedList의 조합으로 이루어져 있다.LinkedList의 주소가 저장되어 있고, 배열의 위치는 key로 Hash Function을 돌린 결과로 알 수 있다.배열의 장점인 빠른 조회와 LinkedList의 장점인 비순차적인 데이터의 빠른 수정을 합친 자료구조 이다..
key를 매개체로 Hash Function을 돌린 값을 데이터 저장 위치에 사용한다. 하여, key 값만 알고 있으면 데이터를 빠르게 찾을 수 있다.
Collection프레임워크에서는 해싱을 구현할 때, Object 클래스의 hashCode()를 해시 함수로 사용한다.Object에 기본 정의된 hashCode()는 객체의 주소를 이용해 해시코드를 만들어 낸다.String 클래스의 경우 hashCode()로 문자열을 사용한다. 그래서 동일한 문자열을 가지면 해시값도 동일하다.equals()를 override하는 이유는 자바에서 동등성 비교에 사용되는 함수인 equals()를 사용했을 때 같은 값임을 반환하기 위해서 이다.hashCode()를 override하는 이유는 해싱 기법을 사용하는 자료구조를 이용할 때 equals()의 결과와 동일한 결과를 반환하기 위해서 필요하다.의도한 대로 객체가 동등성을 유지하도록 하기 위해 두 함수 모두 같이 override 해야하는 것이다..