[자바] Map(컬렉션)

컴공생의 코딩 일기·2021년 8월 9일
0

자바

목록 보기
9/10
post-thumbnail

목차

  • Map 이란?
    • Map 특징
  • Map 사용법
    • Map 기능
    • HashMap 예제

Map 이란?

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

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)은 존재하지 않습니다.

이상으로 컬렉션의 Map 인터페이스에 대해 알아봤습니다. 잘못된 부분이나 부족한 부분 있으면 피드백 감사하겠습니다!!!

profile
더 좋은 개발자가 되기위한 과정

0개의 댓글