찌니의 프로그래밍 삼매경

[java] Map 종류와 정리 본문

자바(java)

[java] Map 종류와 정리

zzI니☆ 2022. 3. 29. 14:25
728x90

 

Map은 키(key)와 값(value) 쌍의 형태로 이루어져 있으며 보통 검색을 하는 목적으로 많이 사용

 

Map 특징

  1. 키(key)와 값(value)의 쌍으로 이루어져 있다.
  2. 맵(Map)은 순서가 없다.
  3. 키(key)는 중복 불가능.(키(key)가 중복이 있다면 마지막에 저장된 키(key)가 출력됩니다.)
  4. 값(value)은 중복 가능
  5. 키(key)는 값(value)에 인덱스(index)로 사용
  6. 키(key)는 set에 저장된다.
  7. 검색을 하는 목적으로 많이 사용된다.
  8. 맵(Map)은 순서가 없기 때문에 중간 삽입이 없다.

Map 사용법

Map<자료형, 자료형> 맵 명 = new HashMap(or Hashtable)<자료형, 자료형(생략 가능)>();  

Map 인터페이스에서 주의할 점은 다른 List나 set과 달리 Map은 자료형을 두 개 선언해 줘야 합니다. 왜냐하면 키(key)와 값(value)이 한 쌍으로 존재하기 때문

// HashMap 패키지
import java.util.HashMap;

// Hashtable 패키지 
import java.util.Hashtable;
import java.util.Map;

Map 인터페이스에 HashMap과 Hashtable를 사용하기 위해서는 java.util 패키지에 HashMap과 Hashtable, Map을 선언해 줘야함

 

Map 기능

  1. 삽입: Map.put(키(key), 값(value);
  2. 수정(치환): Map.put(기존 키(key), 새로운 값(value)); :
  3. 꺼낼 때: Map.get(키(key));
  4. 삭제: Map.remove(키(key));
  5. size: Map.size(); : Map에 사이즈를 반환
  6. 키(key) 존재 여부: Map.containsKey() : 키(key)가 존재하는지 판단 존재하면 True 존재하지 않으면 False
  7. 값(value) 존재 여부: Map.containsValue() : 값(value)이 존재하는지 판단 존재하면 True 존재하지 않으면 False
  8.  

1) HashMap

HashMap은 Hashtable에 신버전. Hashtable은 동기화 처리가 되지 않고 HashMap은 무조건 동기화 처리된다. 그래서 HashMap 사용을 권장하기 때문에 저는 HashMap 예제만 작성

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

public class MapTest01 {

	public static void main(String[] args) {

		// 맵을 선언
		Map<String, Integer> map = new HashMap<>();

		// 데이터를 삽입.
		map.put("one", 1);
		map.put("two", 2);
		map.put("tree", 3);
		map.put("four", 4);

		// 치환 - 중복 처리를 이용
		map.put("one", 11);

		/*
		 * 맵은 순서가 없기 때문에 중간 삽입 기능이 없다.
		 */

		// 삭제하기
		map.remove("four");

		// 출력 1 - key를 이용
		Set<String> keys = map.keySet(); // Map에 key는 Set에 저장되어 있다.
		/*
		 * Set은 순서가 없기 때문에 기존의 for 문을 사용 불가 이터레이터를 이용한 for 문인 foreah를 이용
		 */
		for (String key : keys) {
			System.out.print(map.get(key) + "\t");
		}
		System.out.println();

		/*
		 * 출력 2 - key와 value를 한 번에 꺼낼 수 있다. - 그러나 잘 사용하지는 않음
		 */

		Set<Entry<String, Integer>> entrys = map.entrySet();

		for (Entry<String, Integer> en : entrys) {
			System.out.println("key: " + en.getKey() + "Value: " + en.getValue());
		}

		// 키(key)와 값(value) 존재하는지 판단하기

		if (map.containsKey("tree")) {
			System.out.println("키(key)는 존재합니다.");
		} else {
			System.out.println("키(key)는 존재하지 않습니다.");
		}
		if (map.containsValue(1)) {
			System.out.println("값(value)은 존재합니다.");
		} else {
			System.out.println("값(value)은 존재하지 않습니다.");
		}

	}
}

출력 결과:
11 3 2
key: oneValue: 11
key: treeValue: 3
key: twoValue: 2
키(key)는 존재합니다.
값(value)은 존재하지 않습니다.

728x90

'자바(java)' 카테고리의 다른 글

[java] 롬복 lombok 이란?  (0) 2022.06.16
[java] 자바 java Iterator  (0) 2022.06.15
[java] List 종류와 정리  (0) 2022.03.31
[java] Set 종류와 정리  (0) 2022.03.30
[java] stream API 예제  (1) 2021.01.24
Comments