Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

Everything has an expiration date

171 - Java 컬렉션(Collection) : Map - HashMap. null 허용. null 을 key와 value로 사용 가능한 HashMap 본문

[Java]/Program source (java)

171 - Java 컬렉션(Collection) : Map - HashMap. null 허용. null 을 key와 value로 사용 가능한 HashMap

Jelly-fish 2023. 9. 25. 14:58
/* ====================================
  ■■■ 컬렉션 (Collection) ■■■
======================================*/

// Map → Hashtable, HashMap

// null 불가 - Hashtable
//             한 단어이므로 t가 대문자가 아니다
// null 허용 - HashMap
//             Hash + Map 의 합성어 이므로 M 이 대문자이다.


/*
○ java.util.Map 인터페이스
   키(key)를 값(value)에 매핑(mapping)하며
   동일한 키를 등록할 수 없고, 유일해야 하며,
   각 키는 한 개의 값 만을 매핑해야 한다.
   즉, 하나의 키에 대응하는 하나의 값을 갖는 구조이다.
   
*/

/*
○ HashMap<K, V> 클래스

   - HashMap 클래스는 Hashtable 클래스와 마찬가지로
     Map 인터페이스를 상속받아 주요 기능이 같지만
	 Synchronization 이 없기 떄문에 동시성 문제가 없다면
	 (즉, 멀티 스레드 프로그램이 아닌 경우라면)
	 HashMap 을 사용하는 것이 성능을 향상시킬 수 있다.

   - 또한, HashMap 은 Hashtable 과 달리 null 을 허용한다.

*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class Test171
{
	public static void main(String[] args) throws IOException
	{
		// HashMap 자료구조 생성
		//HashMap<String, String> map = new HashMap<String, String>();
		Map<String, String> map = new HashMap<String, String>();

		// map 이라는 HashMap 자료구조에 요소 추가
		// → put();

		map.put("영화", "거미집");
		map.put("드라마", "무빙");
		map.put("만화", "슬램덩크");
		map.put("소설", "지구끝의온실");

		// 테스트(확인) → 더미 확인
		// {key = value, key = value, ...}; → 순서가 의미 없이 저장된다.
		System.out.println(map);
		//--==>> {소설=지구끝의온실, 드라마=무빙, 영화=거미집, 만화=슬램덩크}
		//-- 데이터 매핑 구조 확인
		//-- 데이터 요소 격납 순서가 추가 순서와 관계 없음


		// ※ null 관련 처리
		map.put(null, null);			//-- key 와 value 가 모두 null
		
		// 테스트(확인) → 더미 확인
		// key, value 모두 null 인 요소가 추가됨을 확인
		System.out.println(map);
		//--==>> {소설=지구끝의온실, null=null, 드라마=무빙, 영화=거미집, 만화=슬램덩크}
		
		
		// --------------------------------------------------------------------------------
		map.put("동화", null);			//-- value 가 null
		
		// 테스트(확인) → 더미 확인
		// "동화" 키의 value가 null 인 걸 확인.
		System.out.println(map);
		//--==>> {소설=지구끝의온실, null=null, 드라마=무빙, 영화=거미집, 동화=null, 만화=슬램덩크}
		
		
		map.put(null, "모나리자");	//-- key 가 null

		// 테스트(확인) → 더미 확인
		// null 키의 value 가 "모나리자"임을 확인.
		// null = null → 삭제됨
		// null = 모나리자 로 덮어씌어 짐을 확인할 수 있다.
		// 즉, null 도 하나의 key로 간주됨을 알 수 있으며
		// key 가 중복될 경우, 기존에 있던 value 가 덮어씌워져서 사라짐을 알 수 있다.
		System.out.println(map);
		//--==>> {소설=지구끝의온실, null=모나리자, 드라마=무빙, 영화=거미집, 동화=null, 만화=슬램덩크}
		
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		System.out.print("카테고리, 타이틀 입력(컴마 구분) : ");
		String[] temp;

		for (String str ; ((str = br.readLine()) != null) ;)
		{
			temp = str.split(",");
			if (temp.length < 2)
			{
				System.out.print("카테고리, 타이틀 입력(컴마 구분) : ");
				continue;
			}

			map.put(temp[0].trim(), temp[1].trim());
			System.out.println(map);
		}

				
	}


}