Maison > Java > javaDidacticiel > Pourquoi `List.remove()` renvoie-t-il une `UnsupportedOperationException` ?

Pourquoi `List.remove()` renvoie-t-il une `UnsupportedOperationException` ?

Susan Sarandon
Libérer: 2024-12-19 18:11:14
original
584 Les gens l'ont consulté

Why Does `List.remove()` Throw an `UnsupportedOperationException`?

UnsupportedOperationException lors de la suppression d'un élément de la liste

Lorsque vous essayez de supprimer un élément d'une liste à l'aide de List.remove(), vous pouvez rencontrer un Exception d'opération non prise en charge. Cette erreur survient lorsque vous appelez Remove() sur une liste qui ne prend pas en charge les modifications structurelles, telles que les modifications qui modifient sa taille.

Dans le code donné, vous créez une liste en utilisant Arrays.asList(split), qui renvoie une liste de taille fixe soutenue par la division du tableau. Les listes de taille fixe ne vous permettent pas d'ajouter ou de supprimer des éléments, ce qui entraîne l'exception UnsupportedOperationException lorsque vous appelez Remove().

Pour résoudre ce problème, vous pouvez utiliser une LinkedList à la place. LinkedList prend en charge la suppression efficace des éléments et renvoie une liste qui peut être structurellement modifiée. Voici le code corrigé :

List<String> list = new LinkedList<>(Arrays.asList(split));
Copier après la connexion

De plus, le code utilise template.split("|") pour diviser le modèle de chaîne. Cependant, "|" est un métacaractère regex, vous devez donc l'échapper en tant que "|" pour qu'il soit traité comme un caractère littéral pour le fractionnement.

Enfin, envisagez d'utiliser un algorithme plus efficace en générant des indices distincts aléatoires et en utilisant un itérateur de liste pour supprimer des éléments en un seul passage. Cela améliorera la complexité temporelle en O(N) au lieu du O(N^2) actuel.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal