컬렉션 프레임워크 - 4. Map

Ⅳ. Map

1. Map(맵)

 - 두 개의 구성 요소를 지닌 데이터를 저장 및 관리 → Key, Value

 

2. Map의 특징

 - 순서가 없음 (대신, Key가 존재)

 - Key는 중복저장 불가, Value는 중복 가능

 

3. Map의 종류

 - HashMap : 해시 알고리즘으로 키의 중복을 검사하는 Map

 - TreeMap : HashMap에 정렬 기능이 추가된 형태의 Map

 

4. HashMap의 기능

 - put( ) 메소드 : 키와 값을 추가

 - get( ) 메소드 : HashMap을 읽음

 - keySet을 이용해 순차적인 접근도 가능

    ※ keySet : Key만 모여있는 Set

// Example
package day15;

// HashMap
import java.util.*;


public class Main {
	public static void main(String[] args) {
		// HashMap<키, 값>
		// 축구팀 내에서 이름을 같을 수 있으나 번호가 같을 수 없음
		HashMap<Integer, String> player = new HashMap<>();
		
		player.put(7,  "손흥민");
		player.put(11,  "황희찬");
		player.put(11, "조영욱");		// 키가 같으면 덮어짐
		player.put(10,  "이재성");
		player.put(13,  "이재성");
		player.put(1,  "김승규");
		
		System.out.println(player);
		System.out.println("");
		
		// Map은 keySet을 제공함. (keySet : Key만 모여있는 Set)
		// keySet을 이용해 순차적인 접근도 가능
		// 제네릭 기반
		Set<Integer> a = player.keySet();
		
		for(Integer k : a) {
			System.out.print(k + " " + player.get(k) + " ");
		}
	}
}
// 결과 :
// {1=김승규, 7=손흥민, 10=이재성, 11=조영욱, 13=이재성}
// 
// 1 김승규 7 손흥민 10 이재성 11 조영욱 13 이재성

 

5. TreeMap의 기능

 - HashMap과 비슷함

 

6. Map의 예제

// Example
package sample;

import java.util.*;

class aaa implements Comparator<Integer> {
	public int compare(Integer n1, Integer n2) {
		return n2.intValue() - n1.intValue();
	}
}

public class Main {
	public static void main(String[] args) {
		// Comparator 인터페이스를 구현해 객체를 넣고, 내림차순이 되게 코딩
		TreeMap<Integer, String> player = new TreeMap<>(new aaa());
		
		player.put(7,  "손흥민");
		player.put(11,  "황희찬");
		player.put(11, "조영욱");
		player.put(10,  "이재성");
		player.put(13,  "이재성");
		player.put(1,  "김승규");
		
		System.out.println(player);
		System.out.println("");
		
		Set<Integer> a = player.keySet();
		
		for(Integer k : a) {
			System.out.print(k + " " + player.get(k) + " ");
		}
	}
}
// 결과 :
// {13=이재성, 11=조영욱, 10=이재성, 7=손흥민, 1=김승규}
// 
// 13 이재성 11 조영욱 10 이재성 7 손흥민 1 김승규