[Java] HashMap 개념 및 사용방법

해니·2023년 8월 28일
0

Java

목록 보기
5/34
post-thumbnail



HashMap이란?

  • Map 인터페이스를 구현한 대표적인 Map 컬렉션
    • Map은 키(key)와 값(value)으로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조
    • 값은 중복 저장될 수 있지만 키는 중복 저장될 수 없다
    • 기존에 저장된 키와 동일한 키로 값을 저장하면, 기존 값은 없어지고 새로운 값으로 대치된다
  • 해싱(Hashing)을 사용하기 때문에 검색 속도가 O(1)으로 매우 빠르다
    • 해시 함수를 통해 키와 값이 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없다
    • Map에 포함된 key들의 순서가 중요하지 않다면 HashMap을 사용하는 것이 유리하다





💡 해싱(hashing)

  • 해시 테이블(Hash Table)이라는 기억공간을 할당하고 해시 함수(Hash Function)을 이용하여 레코드 키에 대한 Hash Table 내의 Home Address를 계산한 후 주어진 레코드를 해당 기억장소에 저장하거나 검색 작업을 수행하는 방식
  • 직접 접근(DAM) 파일을 구성할 때 사용되며 접근 속도는 빠르나 기억 공간이 많이 요구된다
  • 다른 방식에 비해 검색 속도가 가장 빠르다
  • 삽입, 삭제 작업의 빈도가 많을 때 유리한 방식이다
  • 키-주소 변환 방법이라고도 한다



HashMap의 주요 메서드


메서드설명
boolean containsKey(Object key)지정된 key가 포함되어 있는지 여부를 반환한다.
boolean containsValue(Object value)지정된 value가 포함되어 있는지 여부를 반환한다.
Set entrySet()저장된 키와 값을 엔트리(키와 값의 결합)의 형태로 Set에 저장하여 반환한다.
Set keySet()저장된 모든 key를 Set에 저장하여 반환한다.
void clear()저장된 모든 객체(key, value)를 제거한다.
Object remove(Object key)지정된 key에 해당하는 value를 제거한다.
Object getOrDefault(Object key, Object defaultValue)지정된 키의 값을 반환한다. 키가 없을 경우, default Value로 지정된 데이터를 반환한다.
void putAll(Map map)Map에 저장된 모든 요소를 HashMap에 저장한다.
Object replace(Object key, Object value)지정된 키의 값을 지정된 value로 대체한다.
boolean replace(Object key, Object oldValue, Object newValue)지정된 키와 값(oldValue)가 모두 일치하는 경우에만 새로운 값으로 대체하며, 일치 여부를 반환한다.



HashMap 예제 1) put/get

HashMap<String,String> map = new HashMap<>(); //new에서 타입 파라미터 생략가능
map.put("name","haeni"); //값 추가
System.out.print(map.get("name")); // haeni

HashMap 예제 2) getOrDefault()

map.getOrDefault("name2", "none");
System.out.print(map.get("name2")); //none

HashMap 예제 3) entrySet()

  • entrySet()getKey()getValue()는 현재 차례의 entry 속성 값을 바로 가져온다.
  • keySet()get()은 HashMap을 search 해야하므로 내부에서 hashcode(), equals()등을 실행하기 때문에 효율성이 떨어진다.
for (Map.Entry<String, String> entry : map.entrySet()) {
     System.out.print(entry + ",");
}





출처
https://gocoder.tistory.com/2507
https://hu-coding.tistory.com/104
https://coding-factory.tistory.com/556
https://developer-rooney.tistory.com/67
https://lotuslee.tistory.com/126
https://itstudy402.tistory.com/25

profile
💻 ⚾️ 🐻

0개의 댓글