>  기사  >  Java  >  Java 컬렉션 크기 불변 예외(ImmutableSizeException)에 대한 솔루션

Java 컬렉션 크기 불변 예외(ImmutableSizeException)에 대한 솔루션

PHPz
PHPz원래의
2023-08-18 21:46:071176검색

Java 컬렉션 크기 불변 예외(ImmutableSizeException)에 대한 솔루션

Java 컬렉션 불변 크기 예외(ImmutableSizeException)에 대한 솔루션

Java 컬렉션을 사용할 때 때때로 불변 크기 예외(ImmutableSizeException)가 발생할 수 있습니다. 이 예외는 일반적으로 컬렉션의 크기를 수정하려고 할 때 발생하지만 컬렉션은 변경할 수 없도록 미리 정의되어 있습니다. 이 기사에서는 이 문제에 대한 몇 가지 솔루션을 소개하고 해당 코드 예제를 제공합니다.

  1. 불변 컬렉션 사용
    불변 컬렉션은 한 번 생성되면 수정할 수 없는 컬렉션입니다. Guava의 ImmutableList 및 ImmutableSet와 같이 불변 컬렉션의 구현을 제공하는 Java 라이브러리가 있습니다. 이러한 불변 컬렉션을 사용하면 컬렉션 크기 수정 문제를 피할 수 있습니다.
import com.google.common.collect.ImmutableList;

public class ImmutableCollectionExample {
    public static void main(String[] args) {
        ImmutableList<String> names = ImmutableList.of("Alice", "Bob", "Charlie");
        // 尝试修改集合大小,将会抛出UnsupportedOperationException异常
        names.add("David");
    }
}
  1. 사본을 만들고 작업하세요
    컬렉션의 크기를 수정해야 하는 경우 한 가지 해결 방법은 컬렉션의 복사본을 만들고 복사본에 대해 작업한 다음 결과를 원본 컬렉션에 할당하는 것입니다. 이렇게 하면 불변 컬렉션을 직접 수정하는 것을 방지할 수 있습니다.
import java.util.ArrayList;
import java.util.List;

public class CopyCollectionExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        // 创建副本进行操作
        List<String> updatedNames = new ArrayList<>(names);
        updatedNames.add("David");

        // 将结果赋值给原始集合
        names = updatedNames;
    }
}
  1. 변경 가능한 컬렉션 사용
    컬렉션 크기를 자주 수정해야 하는 경우 ArrayList와 같은 변경 가능한 컬렉션 사용을 고려할 수 있습니다. 변수 컬렉션의 크기는 수정할 수 있지만 멀티스레드 환경에서는 동기화 문제에 주의가 필요합니다.
import java.util.ArrayList;
import java.util.List;

public class MutableCollectionExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        names.add("Charlie");

        // 修改集合大小
        names.add("David");
    }
}

어떤 솔루션을 선택하든 특정 요구 사항과 시나리오에 따라 결정해야 합니다. 컬렉션 데이터를 수정하지 않고 읽기만 하면 되는 경우 불변 컬렉션이 더 나은 선택입니다. 컬렉션 크기를 자주 변경해야 하는 경우 변경 가능한 컬렉션이 더 편리합니다. 또한 스레드 안전성을 보장하기 위해 멀티 스레드 환경에서 컬렉션 작업에도 주의를 기울여야 합니다.

요약:

  • Guava의 ImmutableList 및 ImmutableSet과 같은 불변 컬렉션을 사용하면 컬렉션 크기 수정 문제를 피할 수 있습니다.
  • 작업용 복사본을 만들고 결과를 원본 컬렉션에 할당하면 문제를 해결할 수 있습니다. 크기 문제가 있는 불변 컬렉션 문제.
  • 컬렉션 크기를 자주 수정해야 하는 경우 변수 컬렉션을 사용하고 멀티 스레드 환경의 동기화 문제에 주의할 수 있습니다.

위 솔루션을 통해 Java 컬렉션 크기 불변 예외(ImmutableSizeException) 문제를 효과적으로 해결하고 프로그램의 신뢰성과 안정성을 향상시킬 수 있습니다.

위 내용은 Java 컬렉션 크기 불변 예외(ImmutableSizeException)에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.