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("해당 단어에 대한 뜻은 데이터 베이스에 없습니다.");
}
}
}
이상으로 글 마치겠습니다.
글 읽어주셔서 감사합니다.