リストから要素を削除する際の 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 サイトの他の関連記事を参照してください。