본문 바로가기
자바웹프로그래밍/JAVA

ImmutableMap이란?

by 디찌s 2020. 11. 17.
728x90
반응형

 

*도움이 되셨다면 광고 한번 클릭 부탁드립니다! 제게 큰 힘이됩니다!

ImmutableMap은 com.google.common.collect.

에서 가져올수있다. 

 

ImmutableMap은 변경 불가능한 Map 유형이다.

이는 Map의 데이터 선언후 고정되거나 일정하다는것을 의미하며, 읽기 전용이다.

예를들어 맵에 요소를 추가,삭제 및 업데이트를 하려고하면 UnsupportedOperationException이 발생한다.

ImmutableMap은 null요소도 허용하지 않는다.

null 요소로 immutableMap을 만들려고하면 NullPointerException이 throw됩니다. Map에 null요소를 추가하려고하면 UnsupportedOperationException이 발생한다.

 

ImmutableMap의 장점

1. 스레드의 안전하다.2. 메모리를 효율적으로 쓴다.3. 불변이기에 문제없이 타사 라이브러리에 전달할수있다.

 

 

ImmutableMap 만들기 ImmutableMap
은 다양한 방법으로 만들 수 있습니다. 여기에는 다음이 포함됩니다.

 

1.Guava의 copyOf () 함수를 사용하여 기존 맵에서

// Below is the Java program to create ImmutableMap
  
import com.google.common.collect.ImmutableMap;
import java.util.HashMap;
import java.util.Map;
  
class MapUtil {
  
    // Function to create ImmutableMap from Map
    public static <K, T> void iMap(Map<K, T> map)
    {
        // Create ImmutableMap from Map using copyOf()
        ImmutableMap<K, T> immutableMap = ImmutableMap.copyOf(map);
  
        // Print the ImmutableMap
        System.out.println(immutableMap);
    }
  
    public static void main(String[] args)
    {
        Map<Integer, String> map = new HashMap<Integer, String>();
        map.put(1, "Geeks");
        map.put(2, "For");
        map.put(3, "Geeks");
        iMap(map);
    }
}

결과 {1 = Geeks, 2 = For, 3 = Geeks}

 

 

 

ImmutableMap에서 Builder () 사용

Guava에서 ImmnutableMap 클래스는 Builder()함수를 제공합니다. 이 함수를 통해 새로운 ImmutableMap을 생성하거나
기존 Map 또는 둘 다에서 ImmutableMap을 생성 할 수 있습니다.

 

 

2.새로운 ImmutableMap 만들기

// Java code illustrating of() method to
// create a ImmutableSet
import java.util.*;
import com.google.common.collect.ImmutableMap;
  
class GfG {
    public static void main(String args[])
    {
        // non-empty immutable set
        ImmutableMap<Integer, String> imap = 
                         ImmutableMap.<Integer, String>builder()
                                                 .put(1, "Geeks")
                                                 .put(2, "For")
                                                 .put(3, "Geeks")
                                                 .build();
  
        // Let's print the set
        System.out.println(imap);
    }
}

결과 {1 = Geeks, 2 = For, 3 = Geeks}

728x90
반응형

댓글