ホームページ >Java >&#&チュートリアル >「List.remove()」が「UnsupportedOperationException」をスローするのはなぜですか?

「List.remove()」が「UnsupportedOperationException」をスローするのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-19 18:11:14584ブラウズ

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

リストから要素を削除する際の UnsupportedOperationException

List.remove() を使用してリストから要素を削除しようとすると、 UnsupportedOperationException。このエラーは、サイズを変更する変更などの構造的な変更をサポートしていないリストに対して Remove() を呼び出すと発生します。

指定されたコードでは、Arrays.asList(split) を使用してリストを作成します。これは、配列の分割に基づいた固定サイズのリストを返します。固定サイズのリストでは要素の追加や削除ができないため、remove() を呼び出すと UnsupportedOperationException が発生します。

この問題を解決するには、代わりに LinkedList を使用します。 LinkedList は効率的な要素の削除をサポートし、構造的に変更できるリストを返します。修正されたコードは次のとおりです。

List<String> list = new LinkedList<>(Arrays.asList(split));

さらに、コードは template.split("|") を使用して文字列テンプレートを分割します。ただし、「|」は正規表現のメタ文字であるため、「|」としてエスケープする必要があります。

最後に、ランダムな別個のインデックスを生成し、リスト反復子を使用して 1 回のパスで要素を削除することで、より効率的なアルゴリズムを使用することを検討してください。これにより、時間計算量が現在の O(N^2) ではなく O(N) に改善されます。

以上が「List.remove()」が「UnsupportedOperationException」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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