프로그래밍 언어/Java

Java에서 Map이란?

dongok218 2024. 9. 20. 14:50

Map은 많은 데이터 중에서 원하는 데이터를 빠르게 찾을 수 있는 자료구조이다. 맵은 사전과 같은 자료구조이다. 즉, 사전처럼 단어(Key)가 있고 단어에 대한 설명(Value)가 있다. Map은 중복된 키를 가질 수 없다. 각 키는 오직 하나의 값에만 메핑될 수 있다. 키가 제시되면 Map은 값을 반환한다.

 

자바에서는 Map이라는 이름의 인터페이스가 제공되고 이 인터페이스를 구현한 클래스로 HashMap, TreeMap, LinkedMap등의 3가지의 클래스가 제공된다. HashMap은 해싱 테이블에 저장하고 TreeMap은 탐색 트리에 데이터를 저장한다.

 

HashMap과 TreeMap 중에서 어떤 것을 사용하여야 하는가? 만약 키들을 정렬된 순서로 방문할 필요가 없다면 HashMap이 약간 빠르다.

 

package LeetCode;

import java.util.HashMap;
import java.util.Map;

class Student{
	int number;
	String name;
	
	public Student(int number, String name) {
		this.number=number;
		this.name=name;
	}
	
	public String toString() {
		return name;
	}
}

public class MapTest {
	public static void main(String[] args) {
		Map<String, Student> st = new HashMap<String, Student>();
		st.put("2021301055", new Student(2021301055, "유동옥"));
		st.put("2021301066", new Student(2021301066, "지석진"));
		st.put("2021301077", new Student(2021301077, "지석진"));
		
		System.out.println(st);
		
		st.remove("2021301055");
		st.put("2021301088", new Student(2021301088, "유재석"));
		System.out.println(st.get("2021301088"));
		
		for (Map.Entry<String, Student> s : st.entrySet()) {
			String key = s.getKey();
			Student value = s.getValue();
			System.out.println("key=" + key + ", value =" + value);
		}
	}

}

<Hash Map을 사용한 코드>

 

<출력 결과>