1. [ ImmutableMap 이란 ? ]
Map의 데이터 선언 후 고정되거나 일정하다는 것을 의미하며, 읽기 전용이다.
예를 들어 Map에 요소를 추가, 삭제 및 업데이트를 하려고하면 UnsupportedOperationException이 발생한다.
ImmutableMap은 null요소도 허용하지 않음
null 요소로 immutableMap을 만들려고하면 NullPointerException이 throw됩니다.
Map에 null요소를 추가하려고하면 UnsupportedOperationException이 발생한다.
2. [ ImmutableMap의 장점 ]
1.
스레드에 안전하다.
2.
메모리를 효율적으로 쓴다.
3.
불변이기에 문제 없이 타사 라이브러리에 전달 할 수 있다.
3. [ Immutable Code Sample ]
•
ImmutableMap 만들기
1.
Guava의 copyOf() 함수를 사용하는 방법
import com.google.common.collectImmutableMap;
import java.util.HashMap;
import java.util.Map;
class MapUtill {
// 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(ImmtableMap);
}
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");
//Call IMap Method
IMap(map);
}
}
Result = {1 = Geeks, 2 = For, 3 = Geeks}
Java
복사
•
ImmutableMap에서 Builder() 사용
Guava에서 ImmutableMap 클래스는 Builder()함수를 제공, 이 함수를 통해 새로운 ImmutableMap을 생성하거나 기존 Map또는 둘 다에서 ImmutableMap을 생성할 수 있습니다.
•
새로운 ImmutableMap 만들기
Class ImmutableMapTest {
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();
System.out.println(Imap);
}
}
Result = {1 = Geeks, 2 = For, 3 = Geeks}
Java
복사