본문 바로가기

Programming/Java

java.util.Map 과 Map.Entry<K, V> 인터페이스

반응형

# Map 인터페이스

* 개념: Map 인터페이스는 자바 컬렉션 프레임워크의 일부분으로, 키와 값의 쌍으로 데이터를 저장하는 자료구조이다. 각 키는 유일하며, 하나의 키에 하나의 값만 매핑된다.

 

* 예제

import java.util.HashMap;
import java.util.Map;

public class MapExample {
    public static void main(String[] args) {
        // Map 인터페이스를 구현한 HashMap 인스턴스 생성
        Map<String, Integer> map = new HashMap<>();

        // 키-값 쌍 추가
        map.put("one", 1);
        map.put("two", 2);
        map.put("three", 3);

        // 값 가져오기
        System.out.println(map.get("one"));  // 출력: 1

        // 키-값 쌍 출력
        for (String key : map.keySet()) {
            System.out.println("Key: " + key + ", Value: " + map.get(key));
        }
    }
}

 

# Map.Entry<K, V> 인터페이스 (정적 중첩 인터페이스)

Map 인터페이스 내에는 Entry라는 정적 중첩 인터페이스가 정의되어 있다. 이 인터페이스는 Map의 각 키-값 쌍을 나타낸다.

 

# 정적 중첩 인터페이스

* 개념: 정적 중첩 인터페이스는 외부 인터페이스나 클래스에 정의된 내부 인터페이스로, 외부의 인스턴스와 독립적으로

존재할 수 있다. 이를 통해 관련된 인터페이스나 클래스를 논리적으로 그룹화하여 코드를 더 조직화할 수 있다.

 

 * 예제.

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class EntryExample {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("one", 1);
        map.put("two", 2);
        map.put("three", 3);

        Set<Map.Entry<String, Integer>> entrySet = map.entrySet();

        for (Map.Entry<String, Integer> entry : entrySet) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
    }
}

 

# Map의 메모리 구조
* Heap 영역: Map 인터페이스를 구현한 객체(예: HashMap)는 힙 메모리 영역에 저장된다.
힙 영역은 자바 객체가 동적으로 할당되는 메모리 공간이다.
* Entry 객체: Map은 내부적으로 여러 개의 Entry 객체를 관리한다. Entry 객체는 키와 값의 쌍을 나타낸다. 이들 역시 힙 메모리에 저장된다.

 

# Map 인터페이스의 구현

Map 인터페이스를 구현하는 대표적인 클래스는 HashMap과 TreeMap 이다. 이들 클래스는 Map.Entry 인터페이스를 구현하여 내부적으로 엔트리 객체를 관리한다.

 

# 예제 시나리오

1. new HashMap<>() 를 호출하면 힙 영ㅇ역에 hashMap 객체가 생성된다.

2. map.put("one", 1) 을 호출하면 HashMap 객체 내부에 Entry 객체가 생성되고, 키 "one"과 값 1이 Entry 객체에 저장된다.

3. entrySet() 메서드를 호출하면 HashMap의 모든 Entry 객체를 포함하는 집합(Set) 뷰를 반환한다. 이 뷰 역시 힙 메모리 영역에 저장된다.

 

 

반응형

 

# 요약

* Map 인터페이스: 키-값 쌍으로 데이터를 저장하는 구조

* 정적 중첩 인터페이스:외부 인터페이스나 클래스와 논리적으로 관련된 인터페이스를 그룹화하여 정의한다. 외부의 인스턴스와 독립적으로 존재할 수 있다.

* 메모리 구조: Map 객체와 Entry 객체는 힙 메모리 영역에 저장되며, Entry 객체는 Map 객체 내부에서 관리된다.

 

반응형