Maison  >  Article  >  Java  >  Solution à l'exception immuable de taille de collection Java (ImmutableSizeException)

Solution à l'exception immuable de taille de collection Java (ImmutableSizeException)

PHPz
PHPzoriginal
2023-08-18 21:46:071167parcourir

Solution à lexception immuable de taille de collection Java (ImmutableSizeException)

Solution à l'exception de taille immuable de la collection Java (ImmutableSizeException)

Lors de l'utilisation des collections Java, vous rencontrerez parfois une exception de taille immuable (ImmutableSizeException). Cette exception se produit généralement lorsque vous essayez de modifier la taille d'une collection, mais la collection a été prédéfinie comme immuable. Cet article présentera plusieurs solutions à ce problème et donnera des exemples de code correspondants.

  1. Utiliser des collections immuables
    Les collections immuables sont des collections qui ne peuvent pas être modifiées une fois créées. Certaines bibliothèques Java fournissent des implémentations de collections immuables, telles que ImmutableList et ImmutableSet de Guava. L'utilisation de ces collections immuables évite le problème de la modification de la taille de la collection.
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. Créer une copie et opérer dessus
    Si vous devez modifier la taille de la collection, une solution consiste à créer une copie de la collection, à opérer sur la copie, puis à attribuer le résultat à la collection originale. Cela évite de modifier directement des collections immuables.
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. Utilisez des collections mutables
    Si vous devez modifier fréquemment la taille de la collection, vous pouvez envisager d'utiliser des collections mutables, telles que ArrayList. La taille d'une collection mutable peut être modifiée, mais il faut faire attention aux problèmes de synchronisation dans un environnement multithread.
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");
    }
}

Peu importe la solution que vous choisissez, elle doit être décidée en fonction de vos besoins et scénarios spécifiques. Si vous avez uniquement besoin de lire les données de la collection sans les modifier, les collections immuables constituent un meilleur choix. Si la taille de la collection doit être modifiée fréquemment, les collections mutables sont plus pratiques. De plus, nous devons également prêter attention au fonctionnement des collections dans un environnement multithread pour garantir la sécurité des threads.

Résumé :

  • L'utilisation de collections immuables, telles que ImmutableList et ImmutableSet de Guava, peut éviter le problème de la modification de la taille de la collection
  • Créer une copie pour l'opération et attribuer le résultat à la collection originale, ce qui peut résoudre le problème ; problème des collections immuables ayant des problèmes de taille. Le problème du changement ;
  • Si vous devez modifier fréquemment la taille de la collection, vous pouvez utiliser des collections variables et faire attention aux problèmes de synchronisation dans les environnements multithread.

Grâce aux solutions ci-dessus, vous pouvez résoudre efficacement le problème de l'exception immuable de taille de collection Java (ImmutableSizeException) et améliorer la fiabilité et la stabilité du programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn