「Arrays.asList」リストから削除する際の「UnsupportedOperationException」の解決
提供された Java コードでは、次の場合に例外「UnsupportedOperationException」が発生します。 「Arrays.asList」を使用して作成された「リスト」から要素を削除しようとしています。この問題には複数の根本原因があります。
「Arrays.asList」の固定サイズ リスト
「Arrays.asList」は、提供された配列に基づく「リスト」を返します。 。この「リスト」は固定サイズです。つまり、要素の追加や削除によってその構造を変更することはできません。したがって、「remove」メソッドを呼び出すと「UnsupportedOperationException」が発生します。
「split」メソッドの正規表現の問題
指定されたパラメータ「」を持つ「split」メソッド|"正規表現メタキャラクターとして扱います。リテラル「|」で分割するには、「|」としてエスケープする必要があります。
ランダム要素削除のアルゴリズムが改善されました
「remove」を複数回呼び出すことを避けるためランダム インデックスを使用する場合、より効率的なアプローチは、範囲内で十分な乱数を生成し、対応するインデックスの要素を 1 回のパスで削除することです。 「listIterator」を使用した「リスト」。この最適化により、アルゴリズムの複雑さが O(N) に軽減されます。
改訂されたコード
問題を解決し、改善されたアルゴリズムを実装するには、次のコードを使用できます。 :
import java.util.LinkedList; import java.util.List; import java.util.Random; public static String SelectRandomFromTemplate(String template, int count) { String[] split = template.split("\|"); List<string> list = new LinkedList<string>(Arrays.asList(split)); Random r = new Random(); int[] indicesToRemove = new int[list.size() - count]; for (int i = 0; i iter = list.listIterator(); for (int i : indicesToRemove) { iter.next(); iter.remove(); } return StringUtils.join(list, ", "); }</string></string>
この改訂されたコードは上記の問題に対処し、配列から作成された固定サイズの「リスト」を使用し、 「UnsupportedOperationException」を回避するために、ランダムな要素を削除するためのより効率的なアルゴリズム。
以上が「Arrays.asList」から要素を削除すると「UnsupportedOperationException」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

jvm'sperformanceiscompetitivewitherruntimes、sped、safety、andproductivityの提供

javaachievesplatformedentenceTheThejavavirtualMachine(JVM)、avainwithcodetorunonanyplatformwithajvm.1)codescompiledintobytecode、notmachine-specificcode.2)

thejvmisanabstractcomputingMachineCrucialForrunningJavaProgramsDuetoitsPlatForm-IndopentInterChitecture.Itincludes:1)ClassLoaderForloadingClasses、2)Runtimedataareaforforforatastorage、3)executionEngineWithinterter、Jitcompiler、およびGarbagecolfecolfecolfececolfecolfer

jvmhasacloserelationshiptheosasittrantesjavabytecodecodecodecodecodecodecodecodecodecodecodecodecodetructions、manageSmemory、およびhandlesgarbagecollection.thisrelationshipallowsjavatorunonvariousosenvirnments、Butalsedentsはspeedifediferentjvmbeviorhiorsandosendisfredediferentjvmbehbehioorysando

Javaの実装「Write and、Run Everywherewhere」はBytecodeにコンパイルされ、Java仮想マシン(JVM)で実行されます。 1)Javaコードを書き、それをByteCodeにコンパイルします。 2)JVMがインストールされたプラットフォームでByteCodeが実行されます。 3)Javaネイティブインターフェイス(JNI)を使用して、プラットフォーム固有の機能を処理します。 JVMの一貫性やプラットフォーム固有のライブラリの使用などの課題にもかかわらず、Woraは開発効率と展開の柔軟性を大幅に向上させます。

javaachievesplatformentenceTheTheTheJavavirtualMachine(JVM)、CodetorunondifferentoperatingSystemswithOutModification.thejvmcompilesjavacodeplatform-IndopentedbyTecodeを承認することを許可します

javaispowerfulfulduetoitsplatformindepentence、object-orientednature、richstandardlibrary、performancecapability、andstrongsecurityfeatures.1)platformendependenceallowseplicationStorunonaydevicesupportingjava.2)オブジェクト指向のプログラマン型

上位のJava関数には、次のものが含まれます。1)オブジェクト指向プログラミング、サポートポリ型、コードの柔軟性と保守性の向上。 2)例外処理メカニズム、トライキャッチ式ブロックによるコードの堅牢性の向上。 3)ゴミ収集、メモリ管理の簡素化。 4)ジェネリック、タイプの安全性の向上。 5)コードをより簡潔で表現力豊かにするためのAMBDAの表現と機能的なプログラミング。 6)最適化されたデータ構造とアルゴリズムを提供するリッチ標準ライブラリ。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 中国語版
中国語版、とても使いやすい
