JAVA

[JAVA] Map 인터페이스(HashMap, TreeMap)

정공자씨 2024. 4. 28. 16:58

 

 

 

Map 인터페이스

 

특징

  • 키(key)와 값(vale)의 쌍으로 연관지어 이루어져있는 데이터의 집합
  • 키(key)는 해당 Map에서 고유해야 하고(중복 허용 X)
  • 값(value)는 중복하여 저장할 수 있음
  • 기존에 저장된 데이터와 중복된 키(key)와 값(value)를 저장하면
    • 기존의 값은 없어지고, 마지막에 저장한 값이 남게 됨
  • 저장한 순서가 유지되지 않음
키(key) 값은 중복 되어서는 안됨

 

종류

  1. HashMap 클래스
  2. HashTable 클래스
  3. TreeMap 클래스
  4. Properties 클레스

 

 

 

 

HashMap 클래스

특징

  • 키(key)와 값(value)을 한쌍으로 묶어 데이터를 저장
  • 키(key)를 이용하여 HashMap의 값(value)을 얻을 수 있음
  • 중복을 허용하지 않고
  • 순서를 보장하지 않음
  • 키(key)와 값(value)의 값으로 null이 허용
    • (null, null)
< 엔트리 >
- entry
- haskmap에 저장된 객체 중에 (key : value) 형태의 데이터 를 '엔트리'라고 함

entryKey() 메서드
- HashSet에 저장된 객체들을 엔트리로 변환한 후에, HashSet으로 리턴하는 메서드

 

예제

public class Test3 {
    public static void main(String[] args) {

        Map<String, String> hashMap = new HashMap<>();

        hashMap.put("1", "one");
        hashMap.put("2", "two");
        hashMap.put("3", "three");

        hashMap.get("1");// get(key) = "one"
	        
	      // hashmap의 key값을 set 집합으로 반환, 순회  
        for(String key : hashMap.keySet()) {
            System.out.println("key : " + key);
            System.out.println("value : " + hashMap.get(key));
            System.out.println("-----------------");
        }
    }
}

 

[ 실행 결과 ]

 

 

 

 

 

 

 

TreeMap 클래스

정의

  • 이진 검색 트리의 형태, 키(key)와 값(value)의 쌍을 이루어진 데이터를 저장
    • TreeSet의 원리와 같음
[ TreeSet와의 차이점 ]
이진 검색 트리를 이용하지만

TreeSet은 값(value)만 저장
TreeMap은 키와 값의 쌍인 엔트리(entry)를 저장함
  • 키(key) 값을 기준으로 오름차순 정렬이
    • 입력 순서에 상관 없이 키(key) 크기 순으로 정렬
  • (키 : 값)의 쌍을 정렬된 순서로 저장하므로, 빠른 검색이 가능함
  • 하지만 (키 : 값)을 저장하는 동시에 정렬도 함께 하기 때문에, 저장시간이 오래 걸림
[ HashMap과 다른 점 ]

1. TreeMap은
엔트리(키: 값) 저장 시에,  key는 입력 순서에 관계없이 크기 순으로 정렬되어 저장됨
2. HashMap은 저장 순서가 없음

 

 

정렬되는 순서

숫자 - 영어 대문자 - 영어 소문자 - 한글

 

장점

  • (키 : 값)의 쌍을 정렬된 순서로 저장하므로, 빠른 검색이 가능
  • 정렬된 데이터를 조회해야 하는 범위 검색의 경우, 효율적인 검색이 가능함

 

단점

  • (키 : 값)을 저장하는 동시에 정렬도 함께 하기 때문에, 저장시간이 오래 걸림
  • 데이터를 저장할 때 즉시 정렬을 하기 때문에, 추가나 삭제 시에 오래 걸림