HashMap 해시맵

FinalForever·2025년 12월 13일

HashMap이란?

HashMap<K, V> 컬렉션은 '키(key)'와 '값(value)'의 쌍으로 구성되는 요소를 다룬다.

HashMap<String, String> h = new HashMap<String, String>();	//해시맵 객체 생성
h.put("apple", "사과");	// "apple" 키와 "사과" 값의 쌍을 h에 삽입
String kor = h.get("apple");	// "apple" 키의 값 검색. kor는 "사과"

HashMap<K, V>클래스의 주요 메소드

메소드설명
void clear()HashMap의 모든 요소 삭제
boolean containsKey(Object key)지정된 키(key)를 포함하고 있으면 true 리턴
boolean containsValue(Object value)하나 이상의 키를 지정된 값(value)에 매핑시킬 수 있으면 true 리턴
V get(Object key)지정된 키(key)에 매핑되는 값 리턴. 키에 매핑되는 어떤 값도 없으면 null 리턴
boolean isEmpty()HashMap이 비어 있으면 true 리턴
Set<K Key, V value>HashMap에 있는 모든 키를 담은 Set 컬렉션 리턴
V remove(Object key)key와 value를 매핑하여 HashMap에서 삭제
int size()HashMap에 포함된 요소의 개수 리턴

해시맵 생성

해시맵은 HashMap<K, V>에서 '키(key)'와 '값(value)'으로 사용할 구체적인 타입을 지정하여 생성한다.

HashMap<String, String> h = new HashMap<String, String>();

해시맵에 요소 삽입

요소를 삽입할 때는 put() 메소드에 '키'와 '값'을 인자로 전달.

	h.put("cloud", "클라우드");	//	"cloud"가 키이고, "클라우드"는 값이다. 
  	h.put("jack", "잭");
  	h.put("sephiroth", "세피로스");

'키'로 '값'읽기

	String kor1 = h.get("jack");	// kor1 = "잭"
	String kor2 = h.get("sephiroth");	//kor2 = "세피로스"

만약, 해시맵에 없는 '키'로 get()을 호출하면 null 값을 리턴

String kor3 = h.get("tifa");	// kor3 = null

'키'로 요소 삭제

'키'를 이용하여 요소를 삭제할 때 다음과 같이 remove() 메소드를 이용.

h.remove("sephiroth");	// put("sephiroth", "세피로스")라고 삽입한 요소 삭제

요소 개수 알아내기

size() 메소드를 호출하면 된다.

int n = h.size();	// 현재 h 내에 있는 요소의 개수 리턴

해시맵의 전체 검색

HashMap의 keySet() 메소드는 모든 키를 Set 컬렉션 객체로 만들어 리턴한다.

Set<String> keys = h.keyset();	// 해시맵 h에 있는 모든 키를 Set 컬렉션으로 리턴
Itertator<String> it = keys.iterator();	// Set에서 문자열을 검색할 수 있는 Iterator 리턴
while(it.hashNext()) {
	String key = it.next();	// 키
	String value = h.get(key);	// 값 
System.out.println("(" + key + "," + value + ")");	// 키와 값의 쌍 출력 

예제

import java.util.*;
public class Main {
	public static void main(String[] args) {
// 파판 캐릭터와 한글 단어의 쌍을 저장하는 HashMap 컬렉션 생성
HashMap<String, String> dic = new HashMap<String, String>();

// 3개의 (key, value) 쌍을 dic 저장
dic.put("cloud", "클라우드");
dic.put("jack", "잭");
dic.put("sephiroth", "세피로스");

// dic 해시맵에 들어 있는 모든 (key, value) 쌍 출력 
Set<String> keys = dic.keySet();	// 모든 키를 Set 컬렉션에 받아옴 
Iterator<String> it = keys.iterator();	// Set에 접근하는 Iterator 리턴 
while(it.hasNext()) {
	String key = it.next();	// 키 
	String value = dic.get(key); // 값
	System.out.println("(" + key + "," + value + ")");	
	}
System.out.println();

// 사용자로부터 파판 입력받고 한글 단어 검색 
Scanner scanner = new Scanner(System.in);
	for(int i=0; i<3; i++) {
     System.out.print("찾고 싶은 단어는?");           
       String eng = scanner.next();
       // 해시맵에서 '키' eng의 '값' kor 검색             
       String kor = dic.get(eng);
       if(kor == null) System.out.println(eng + "는 없는 단어 입니다.");
          	else System.out.println(kor);
	}
         }
               }

ps. BOJ를 풀자 ㅜㅅㅜ 이제 점점 어렵워지기 시작했어요, 살려주세요 ㅜㅁㅜ

profile
No More Struggle & Machine Mind

0개의 댓글