안녕하세요.
고코더 입니다.
HashMap 이란?
HashMap은 Map 인터페이스를 구현하고 있는 클래스입니다 키(key), 값(value)을 구성되어 있습니다. key는 정확히 하나의 value만 가질 수 있습니다. Java Collections Framework에 속한 구현체 클래스이며, Map 인터페이스를 구현한 함수입니다. key 값의 hashCode를 index로 Araay에 값을 저장하면서, 검색 속도는 매우 빠르게 작동합니다.
/**
* Constructs a new {@code HashMap} with the same mappings as the
* specified {@code Map}. The {@code HashMap} is created with
* default load factor (0.75) and an initial capacity sufficient to
* hold the mappings in the specified {@code Map}.
*
* @param m the map whose mappings are to be placed in this map
* @throws NullPointerException if the specified map is null
*/
public HashMap(Map<? extends K, ? extends V> m) {
this.loadFactor = DEFAULT_LOAD_FACTOR;
putMapEntries(m, false);
}
HashMap 특징
- 저장은 느리다는 단점이 있다.
- 많은 양의 데이터를 검색하는데 뛰어난 성능을 보인다.
- 반대의 장점을 가진 것은 TreeMap이다.
- 키값은 중복이 불가능 하지만, 값(vlaue)은 중복이 가능하다.
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)가 모두 일치하는 경우에만 새로운 값으로 대체하며, 일치 여부를 반환한다. |
참조: https://moonong.tistory.com/5
만약 면접에서 물어본다면?
해쉬 맵을 사용하면 저장은 느리지만 데이터를 검색하는데 뛰어는 성능으로 Map을 구했을 때, 키(Key)와 값(Value)을 묶어서 하나의 데이터(entry)로 사용이 가능합니다. List가 아닌 이 방법을 사용하는 이유는 성능 때문입니다. 키 값은 Null을 지원하지만 멀티스레드는 환경은 지원하지 않습니다.
'IT_Developers > JAVA' 카테고리의 다른 글
Spring - Class 객체를 사용해 JSON 만들기 (0) | 2022.02.08 |
---|---|
Spring - HashMap을 이용한 JSON 만들기 (0) | 2022.02.07 |
Spring - @RestController 사용하기 / "Hello RestController" (0) | 2022.02.06 |
Spring - @RestController란? (0) | 2022.02.06 |
SpringBoot - yml 에 mysql 연결 설정 (0) | 2022.02.04 |
댓글