페이스북에서 본 이일민님의 타임라인 글을 보고 정리 차원에서 다시 작성해본다.
Set<String> set = new HastSet<>();
// ... add some elements in set
set = Collections.unmodifiableSet(set);
Node[] 1개 (HashMap 내부에서 객체를 저장하는 table) 


Set.of()를 사용해서 불변 컬렉션을 생성해보자.


"생성후 변경은 필요없고(+불가능해야 하고) 참조만 한다면 기존의
Collections.unmodifiableSet()대신 컬렉션 인터페이스의static메서드로 추가된of()로 생성하면 좋다.
Collections.unmodifiableSet() 이 동작하는 방식을 살펴보면 다음과 같이 set(), add(), addAll() 등의 변경을 가하는 메서드를 호출하면 내부적으로 UnsupportedOperationException을 발생시키도록 되어있다.
Collections.unmodifiableSet() 등을 통해 생성된 객체가 아닌 변경 가능한 원본 객체를 통해 접근하게되면 Unmodifiable Collection도 변경된다. (원본 자체에 대한 수정을 막을 수 없음)
Set<String> immutable = Collections.unmodifiableSet(new HashSet<>(set));
Set.of() 등은 원본 컬렉션을 참조하는 방식이 아닌 애초에 값들을 가지고 새로운 불변 컬렉션을 생성하기 때문에 불변성을 달성할 수 있다.결론을 3줄 요약해보자면
unmodifiableCollection() 대신 Collection의 of() 를 활용하자. (좀 더 쉽고, 내부적으로도 가벼운 불변 컬렉션을 만들 수 있다.)