본문 바로가기
자료 구조/기본 개념

[자료 구조] 12. Map 인터페이스

글: Song hyun 2024. 5. 13.
728x90
반응형

[자료 구조] 12. Map 인터페이스

1. Map 인터페이스란?

2. Map 인터페이스의 주요 특징

3. Map의 주요 기능 및 메서드


 

1. Map 인터페이스란?

Map 인터페이스는 키(key)와 값(Value)를 연관시키는 자료 구조이다. 이는 사전과 유사한 구조인데, 각각의 키들은 그들만의 고유한 값을 가진다. Java에서 Map은 인터페이스로 정의되어 있으며, 이를 구현한 여러가지 클래스가 있다.

 

2. Map 인터페이스의 주요 특징

(1) 키-값 저장

(2) 중복 키 불가: Map은 각각의 키가 고유해야 한다. 즉 동일한 키를 두 번 이상 추가할 수 없다. (=키의 유일성)

(3) 순서 없음: Map은 키-값 쌍을 저장하는데 순서를 유지하지 않는다. 따라서, Map에 저장된 순서와 데이터를 순회할 때의 순서는 일치하지 않을 수 있다.

 

3. Map의 주요 기능 및 메서드

(1) put(key, value): 키 값을 저장하는 메서드.

(2) get(key): 주어진 키를 사용하여 매핑된 값을 검색한다.

(3) put(key, value): 새로운 키-값 쌍을 추가하거나, 기존 키의 값을 갱신한다.

(4) remove(key): 특정 키에 할당된 값을 제거한다.

(5) size(): Map의 크기(키-값 쌍의 수)를 확인한다.

 

*Map 인터페이스의 구현 클래스

-HashMap

-LinkedHashMap

 

4. Map 인터페이스의 기능 및 메서드 사용 (예제) 

 

package Structure.ch07;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class HashMapClass {

	// 함수의 시작
	public static void main(String[] args) {

		// key, value 구조 한 쌍이다.
		// 업캐스팅 상태
		Map<String, String> books = new HashMap<String, String>();

		// 추가 : 데이터 추가
		books.put("해리포터", "J.K 롤링");
		books.put("반지의 제왕", "J.R.R 톨킨");
		books.put("1984", "조지 오웰");

		// 읽기 : 데이터 읽기
		String author = books.get("해리포터");
		System.out.println("해리 포터 저자 : " + author);
		
		String author2 = books.get("1984");
		System.out.println("1984 저자 : "+ author2);
		
		// 수정 : 데이터 수정
		books.put("1984", "조조입니다.");
		System.out.println(books.get("1984"));
		
		// 삭제 : 데이터 삭제
		books.remove("1984");
		System.out.println(books);
		
		
		// 유용한 기능 확인
		// 1. 자료구조 map에 저장되어 있는 key 값들을 확인하는 방법
		System.out.println("map 자료구조의 key값 확인 "+ books.keySet());
		
		// 반복문 활용
		// map 구조는 순서가 없어서 for -> use index 사용이 불가능하다.
		
		// keySet()은 map의 key를 반환하는 메서드이다.
		for(String key : books.keySet() ) {
			System.out.println("key 값 호출 : "+key);
			System.out.println("key를 통해서 value에 접근 : "+books.get(key));
		}
		
		// 두번째 방법
		// 반복자 활용하는 방법
		System.out.println("--------------------");
		Iterator<Entry<String, String>> iter = books.entrySet().iterator();
		while(iter.hasNext()) {
			// Entry<String, String>
			Entry<String,String> entry =iter.next();
			System.out.println(" 책 : "+entry.getKey()+", "+"저자 : "+entry.getValue());
		}

		System.out.println("--------------------");
		
		// 자료구조에서 제공하는 foreach 구문의 사용
		// 람다 표현식 : 타입 추론, 화살 표기법을 사용한다.
		books.forEach((key,value)->{
			System.out.println("key : "+key);
			System.out.println("value : "+value);
		});
		
		books.clear();
		System.out.println(books.size());
		
	} // end of main

}
728x90
반응형