Java

[Java/자바]Map(맵)

둥구는 지굴다 2022. 10. 13. 21:01

안녕하세요 오늘은 Map에 대해 알아보겠습니다.

Map이란?

Map은 키를 통해서 값을 참조할 수 있는 구조를 말합니다.

키를 통해서 값을 참조하는 것을 예로 들면 저희가 사과라는 단어가 궁금합니다.

사전을 들어가 찾아보면 사과:apple이라고 나와있겠죠 여기서 사과는 키, apple는 값이 될 수 있는 것이지요

특징

  • 인터페이스이기 때문에 사용하려면 업 캐스팅이 필요합니다.
  • Map을 구현한 대표 클래스⇒ HashMap, TreeMap
메서드 설명
boolean contiansKey(Object Key) 해당 키가 있는지 여부 반환
boolean containsValue(Object Value) 해당 값이 있는지 여부 반환
V get(Object Key) 해당 Key와 쌍인 값을 반환
boolean isEmpty( ) 맵 객체에 요소가 없으면 true반환
Set<Key> KeySet( ) 키들을 Set 형태로 반환
V put(k Key, V value) 키와 값을 요소로 추가
V remove(Object Key) 이 키를 가진 요소를 제거
int size( ) 전체 요소의 개수를 반환

HashMap

HashMap은 Map인터페이스를 구현한 Map컬렉션입니다.

Key와 Value로 데이터를 저장합니다.

특징

  • Map 인터페이스의 한 종류
  • Map의 모든 속성을 갖고 있으며 저장 방식 동일
  • 해싱(Hashing)이라는 검색 알고리즘을 사용
  • Key의 중복은 허용하지 않으나 value의 중복은 허용 ex) id , password

해싱(Hashing)이란?

해싱이란 검색 알고리즘입니다. 

자료구조 내의 데이터 중 원하는 데이터를 찾는 과정입니다.

배열에 저장된 데이터를 가장 빨리 찾는 방법은?

저장된 데이터가 몇 번째 위치하는지를 알아오는 것입니다.

따라서 위의 내용을 바탕으로 데이터를 넣을 때 데이터의 값을 위치 값으로 정해 놓으면 가장 빠르게 데이터를 찾아올 수 있겠죠

하지만 위의 방법의 넣는 방법은 작은 값은 괜찮지만 만약 100이라는 상대적으로 큰 값을 비어져있는 배열에 넣는다면 메모리 낭비가 심하다는 단점이 발생합니다.

따라서, 찾을 값(Key)을 갖고 저장된 위치를 알 수 있고, 메모리 낭비를 최소화해주는 방법이 바로”해싱”입니다.

따라서 해싱이란

메모리 낭비를 최소화하기 위해서 저장할 값과 입력받을 시, 연산을 통해 새로운 주소 값을 생성하여 메모리에 저장(Mapping) 하는 방법입니다.

 

해싱의 구조

  • 키 값을 해시 값으로 변경해주는 해시 함수
  • 변경된 해시 값으로 저장할 공간인 해시 테이블

HashMap 사용해보기

import java.util.HashMap;
import java.util.Scanner;

public class HashMapEx {

	public static void main(String[] args) {
		HashMap <String,String>hm= new HashMap<String,String>( );
		Scanner sc= new Scanner(System.in);
		
		//1. put(Key,Value)
		hm.put("apple", "사과");
		hm.put("paper", "종이");
		hm.put("flower", "꽃");
		
		String voca;
		System.out.println("알고 싶은 단어를 입력하세요:");
		voca=sc.nextLine();
		//2. containsKey(Key): Key가 hashmap에 존재한다면 true
		if(hm.containsKey(voca)) {
			//3. get(key) : value값을 반환합니다.
			System.out.println("해당하는 뜻은:"+hm.get(voca));
		}
		else {
			System.out.println("해당 단어에 대한 뜻은 데이터 베이스에 없습니다.");
		}
	}

}


이상으로 글 마치겠습니다.

글 읽어주셔서 감사합니다.