ホームページ  >  記事  >  Java  >  Java コレクション サイズ不変例外 (ImmutableSizeException) の解決策

Java コレクション サイズ不変例外 (ImmutableSizeException) の解決策

PHPz
PHPzオリジナル
2023-08-18 21:46:071171ブラウズ

Java コレクション サイズ不変例外 (ImmutableSizeException) の解決策

Java コレクションの不変サイズ例外 (ImmutableSizeException) を解決するソリューション

Java コレクションを使用すると、不変サイズ例外 (ImmutableSizeException) が発生することがあります。この例外は通常、コレクションのサイズを変更しようとしたときに発生しますが、コレクションは不変として事前定義されています。この記事では、この問題に対するいくつかの解決策を紹介し、対応するコード例を示します。

  1. 不変コレクションの使用
    不変コレクションとは、一度作成すると変更できないコレクションを指します。 Java には、Guava の ImmutableList や ImmutableSet など、不変コレクションの実装を提供するライブラリがいくつかあります。これらの不変コレクションを使用すると、コレクション サイズの変更の問題が回避されます。
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. コピーを作成して操作を実行する
    コレクションのサイズを変更する必要がある場合、解決策の 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。