English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java에서 불변 집합을 생성하는 방법

초기화 후 변경할 수 없는 객체를 생성할 때마다 불변 객체를 정의할 수 있습니다. 불변 객체를 생성하는 특정 규칙은 없으며, 초기화 후 클래스 필드에 대한 접근을 제한하는 것이 그 생각입니다.

Set은 모음 프레임워크의 인터페이스로 중복된 값은 허용하지 않습니다.

불변 집합을 생성할 때에는 다음과 같은 점을 기억해야 합니다:

  • 요소를 추가하거나 제거할 수 없어야 합니다.

  • 불변 집합에 널 값을 추가할 수 없어야 합니다.

  • 불변 집합을 생성하면, 이에 대한 객체를 추가하거나 제거할 수 없지만, 저장된 객체를 수정할 수 있습니다.

Java를 사용하여9의 Of() 메서드

Java9의 of() 메서드는 요소 목록을 받아들여 주어진 요소들의 불변 집합을 생성하고 반환합니다. 이 메서드를 사용하여 Java로 불변 집합을 생성할 수 있습니다.

import java.util.Set;
public class ImmutableSet {
   public static void main(String args[]) {
      Set<Integer> set = Set.of(1458, 5548, 4587);
      System.out.println(set);
   }
}

unmodifiableSet() 메서드를 사용하여

이 메서드는 수집 객체를 매개변수로 받아 그의 불변 형태를 반환합니다.

필요한 객체를 전달하여 그의 불변 형태를 가져오기 위해 이 메서드를 호출합니다.

예제

다음 Java 프로그램에서 HashSet 객체를 생성하고 unmodifiableSet() 메서드를 사용하여 불변 객체로 변환하여 요소를 추가하려고 시도합니다.

우리가 그를 불변으로 설정했기 때문에 실행 시간 예외가 발생합니다.

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
public class ImmutableSet {
   public static void main(String args[]) {
      Set<Integer> hashSet = new HashSet<Integer>();
      //HashSet을 채우기
      hashSet.add(1124);
      hashSet.add(3654);
      hashSet.add(7854);
      hashSet.add(9945);
      System.out.println(hashSet);
      //set 객체를 불변 객체로 변환
      Set immutable = Collections.unmodifiableSet(hashSet);
      immutable.add(4466);
   }
}

출력 결과

[1124, 3654, 9945, 7854]
Exception in thread "main" java.lang.UnsupportedOperationException
   at java.util.Collections$UnmodifiableCollection.add(Unknown Source)
   at MyPackage.ImmutableSet.main(ImmutableSet.java:19)

추천해드립니다