Map 중에서
HashMap에 대해 알아보자!
[HashMap, TreeMap, LinkedHashMap]과 같은 Map들이 있다.
각 Map의 사용법, 차이점은 다음에 알아보자!
오늘은 HashMap!!
Map인터페이스란?
Map인터페이스는 키(Key)와 데이터(Value) 값을 한 쌍으로 묶어서 저장하는 컬랙션 클래스를 구현하는 데 사용된다.
키(Key)의 중복을 허용하지 않지만 값(Value)의 값은 중복을 허용합니다.
그 이유는 값(Value)을 추출하기 위해서는 키(Key)객체에 대응하는 값(Value) 객체를 반환하는데 중복된 Key객체가 있을 경우 어떠한 키(Key) 객체를 가져와야 할지 모르기 때문이다.
(사진 및 내용참고 출처:https://2018-start.tistory.com/33)
HashMap컬렉션 클래스
HashMap <Key, Value> 컬렉션은 java.util.*; 패키지에 속한 컬렉션 클래스입니다.
HashMap은 내부에 '키(Key)' 와 '값(Value)'을 저장하는 자료구조를 가집니다.
또, Map 인터페이스에는 다음과 같은 주요 메소드가 있습니다.
HashMap 주요 메소드 | 설명 |
put() | 키(Key)와 값(Value)으로 구성된 새로운 데이터를 추가 |
get() | 지정한 키(Key)에 해당하는 데이터를 반환 |
remove() | 지정한 키(Key)에 해당하는 데이터를 삭제 |
containKey() | 지정한 키(Key)의 존재여부 반환 |
containsValue() | 지정한 값(Value)의 존재여부 반환 |
size() | Map의 요소 개수를 반환 |
isEmpty() | Map이 비어있는지의 여부 반환 |
간단한 예시를 통해 HashMap 에 대해 알아보자!
package STUDY;
import java.util.*;
public class hashMap {
public static void main(String[] args) {
HashMap<String,Integer> hm = new HashMap<String,Integer>();
hm.put("지훈",25);
hm.put("영표",21);
hm.put("박지성",35);
hm.put("류현진",30); //put()메소드를 이용해 Key와 Value 데이터 추가
Integer age = hm.get("지훈"); //get()메소드를 이용해 Key("지훈")에 대한 값(Value) 호출
System.out.println("지훈's age is:" + age);
System.out.println("---------------------------");
hm.put("지훈", 2); //이미 저장된 Key값과 중복 된 데이터 추가
Integer age2 = hm.get("지훈");
System.out.println("지훈's age is:" + age2);
}
}
결과 값
지훈's age is:25 <<처음 추가된 데이터 에 Key에 대한 Value >> 25 호출 -------------------------------------------------------------------------------------------------------------------------------- 지훈's age is:2 <<"지훈"이라는 중복된 Key와 다른 Value를 추가하니 나중에 나온 Value가 호출되는 것을 볼 수 있다. |
HashMap 생성
HashMap<String, String> hm = new HashMap<String, String>();
HashMap의 장단점
장점:
(1) 요소의 삽입,삭제 시간이 매우 빠르다.
[요소의 위치를 결정하는 해시 함수가 간단한 코드로 이루어지며, Vector나 ArrayList 컬렉션 클래스처럼 요소의 삽입, 삭제시 다른 요소들의 위치 이동이 필요 없기 때문]
(2) 요소 검색은 더욱더 빠르다.
[HashMap의 get(Key)메소드가 호출되면 해시 함수가 Key가 저장된 위치를 단번에 찾아내므로, 위에서 말한 Vector나 ArrayList 컬렉션 클래스처럼 시간낭비가 없기 때문]
단점:
(1) 오직 키(Key)로만 검색해야 한다.
[HashMap은 인덱스를 이용하여 요소에 접근 할 수 없다. 그러므로 빠른 삽입과 검색이 필요한 프로그램에 적합하다.]
추가적으로 HashMap에 대해 참고하면 좋을 사이트
( http://tech.javacafe.io/2018/12/03/HashMap/ )
HashMap을 이용한 코딩테스트(프로그래머스) 예제!!
https://hanswsw.tistory.com/11 (완주하지 못한 선수)