데이터를 저장할 때 키(Key)와 값(Value)가 짝을 이루어 저장되는것, 데이터를 저장할 때는 Key값으로 해시함수를 실행한 결과를 통해 저장위치를 결정한다. 따라서 HashMap은 특정 데이터의 저장위치를 해시함수를 통해 바로 알 수 있기 때문에 데이터의 추가, 삭제, 특히 검색이 빠르다는 장점이 있다
- HashMap은 Key값을 통해서만 검색이 가능하며, HashMap의 Key값은 중복될 수 없다
- Value 값은 Key값이 다르다면 중복이 가능하다.
HashMap<String, Integer> map = new HashMap<>();
// 이때 Key값은 String , Value의 값은 Integer가 된다.
HashMap을 생성하려면 위와 같이 Key타입과 Value타입을 파라미터로 주고 기본생성자를 호출한다.
HashMap은 저장공간보다 값이 추가로 들어오면 List와 같이 저장공간을 추가로 늘리지만, List와 다르게 한 칸씩 늘리지 않고 약 두배로 늘리기 때문에 여기서 과부하가 많이 발생한다.
그렇기에 초기에 저장할 데이터 개수를 알고 있다면 Map의 초기용량을 지정해주는 것이 좋다.
HashMap에 값을 추가하려면 key와 Value를 파라미터로 주는 put 메서드를 사용해야 한다.
- 변수명.remove(Key) : 해당 Key에 있는 Value 값 삭제
- 변수명.clear() : 해당 변수에 있는 Key와 Value 값 전체 삭제
- 특정 Key의 Value를 가져오고 싶을 땐 get(Key) 메서드를 사용
- 전체를 출력할 때는 entrySet() 또는 keySet() 메서드를 활용하여 Map의 객체를 반환받은 후 출력할 수 있다.
※ entrySet() : Key와 Value로 구성된 Entry의 Set을 받기 때문에 Key와 Value가 모두 필요할 경우 사용
※ keySet() : Key의 Set을 반환받기 때문에 Key 값만 필요할 경우 사용하는데, 위의 코드와 같이 get(key) 메소드를 통해 Value까지 받아올 수도 있다.
※ ketSet()의 i 변수의 래퍼 클래스는 처음 HashMap에서 제네릭 앞에 있는 래퍼 클래스를 가져온다.