[Java]Collection - Map

수경·2023년 8월 14일
0
post-thumbnail

Map 계열 (Map 인터페이스)

  • HashMap(****)
  • TreeMap
  • Properties(legacy)
  • HashTable(legacy)

HashMap

특징

  • 키(key) 사용하여 요소 접근을 한다.
  • 순서가 없는 데이터 집합
    ex) 강의실 6개 > 햇님반, 달님반,...
  • 키(key) -> 값(value) 한 쌍으로 관리
  • 맵 또는 딕셔너리(Dictionary) == 사전 구조
  • 연관배열
  • 요소 일관 접근 불가능
  • 요소끼리 구분이 용이하다. -> 식별자(key) -> 방의 의미가 있어 가독성이 좋다.
  • 키(key)는 유일하다.
  • 값(value)은 중복 가능하다.
  • map 계열은 없는 키의 값을 요구하면 null을 반환한다.

메소드

  • put(k key, V value) : 요소 추가, 요소 수정
  • size() : 요소 개수
  • get(K key) : 요소 읽기
  • containsKey(K key) : 요소(키) 존재 여부
  • containsValue(V value) : 요소(값) 존재 여부
  • remove(K key) : 요소 삭제
  • clear() : 초기화
  • 일괄 탐색 : set과 향상된 for문 활용 (예제코드 참조)

예제코드

		//String - key 자료형 > 방이름
		//Integer - value 자료형 > 데이터
		HashMap<String, Integer> map = new HashMap<String, Integer>();

		//1. 요소 추가 및 수정
		map.put("국어",  100);	//int 국어 = 100;
		map.put("영어",  90);
        
		map.put("국어", 95);	//데이터 추가가 아닌 수정이 된다.
		System.out.println(map.get("국어"));	//95
        
        
		//2. 요소 개수
		System.out.println(map.size());	//2

		//3. 요소 읽기
		System.out.println(map.get("국어"));	//95
		System.out.println(map.get("영어"));	//90
        System.out.println(map.get("국사"));	//null

		//6. 요소 검색
		System.out.println(map.containsKey("국어"));	//true
		System.out.println(map.containsKey("국사"));	//false
		System.out.println(map.containsValue(90));	//true

		//7. 요소 삭제
		map.remove("국어");
        System.out.println(map.size());	//1
        
        //8. 초기화
		map.clear();
        
 		//Loop - 일괄 탐색
		map.put("국어", 100);
		map.put("영어", 90);
		map.put("수학", 80);
		
		Set<String> set = map.keySet();
		System.out.println(set);
		
		for (String key : set) {
			System.out.println(key + ":" + map.get(key));
		}
        

95
2
95
90
null
true
false
true
1
[국어, 수학, 영어]
국어:100
수학:80
영어:90

TreeMap

특징

  • TreeMap은 이진트리를 기반으로 한 Map 컬렉션이다.
  • Tree > 이진 탐색 트리 > 자동정렬
  • Map > 키+값 > 연관 배열

TreeMap 고유메소드

  • firstKey() : 첫번째(작은) key값을 반환
  • lastKey() : 마지막(큰) key값을 반환
  • headMap(K toKey) : 입력되는 key값 보다 작은 key값들을 반환
  • tailMap(K toKey) : 입력되는 key값 보다 큰 key값들을 반환
  • subMap(String fromKey, String toKey) : fromkey보다 크거나 같고, tokey보다 작은 key값들을 반환

예제코드

		TreeMap<String, String> map = new TreeMap<String, String>();
		
		map.put("while", "흰색");
		map.put("black", "검정");
		map.put("red", "빨강");
		map.put("yello", "노랑");
		map.put("blue", "파랑");
		map.put("orange", "주황");
		map.put("green", "초록");
		
		System.out.print("TreeMap 요소목록: ");
		System.out.println(map);	//key 순으로 자동 정렬
		
		System.out.print("TreeMap 사이즈: ");
		System.out.println(map.size());
		
        //값 수정하기
		System.out.println(map.get("green"));
		map.put("green", "녹색");
		System.out.println(map.get("green"));
		
		System.out.println("TreeMap 고유메소드");
		System.out.println(map.firstKey());
		System.out.println(map.lastKey());
		
		System.out.println(map.headMap("m"));		//{black=검정, blue=파랑, green=녹색}
		System.out.println(map.tailMap("m"));		//{orange=주황, red=빨강, while=흰색, yello=노랑}
		System.out.println(map.subMap("r", "y"));	//{red=빨강, while=흰색}

TreeMap 요소목록: {black=검정, blue=파랑, green=초록, orange=주황, red=빨강, while=흰색, yello=노랑}
TreeMap 사이즈: 7
초록
녹색
TreeMap 고유메소드
black
yello
{black=검정, blue=파랑, green=녹색}
{orange=주황, red=빨강, while=흰색, yello=노랑}
{red=빨강, while=흰색}

profile
웹백엔드개발자를 꿈꾸는

0개의 댓글