Rumah > Java > javaTutorial > Mengapakah `List.remove()` Melemparkan `UnsupportedOperationException`?

Mengapakah `List.remove()` Melemparkan `UnsupportedOperationException`?

Susan Sarandon
Lepaskan: 2024-12-19 18:11:14
asal
584 orang telah melayarinya

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

UnsupportedOperationException Semasa Mengalih Keluar Elemen daripada Senarai

Semasa cuba mengalih keluar elemen daripada senarai menggunakan List.remove(), anda mungkin menghadapi UnsupportedOperationException. Ralat ini timbul apabila anda memanggil remove() pada senarai yang tidak menyokong pengubahsuaian struktur, seperti pengubahsuaian yang mengubah saiznya.

Dalam kod yang diberikan, anda membuat senarai menggunakan Arrays.asList(split), yang mengembalikan senarai saiz tetap yang disokong oleh pemisahan tatasusunan. Senarai bersaiz tetap tidak membenarkan anda menambah atau mengalih keluar elemen, yang membawa kepada UnsupportedOperationException apabila anda memanggil remove().

Untuk menyelesaikan isu ini, anda boleh menggunakan LinkedList sebaliknya. LinkedList menyokong penyingkiran elemen yang cekap dan mengembalikan senarai yang boleh diubah suai secara struktur. Berikut ialah kod yang diperbetulkan:

List<String> list = new LinkedList<>(Arrays.asList(split));
Salin selepas log masuk

Selain itu, kod menggunakan template.split("|") untuk memisahkan templat rentetan. Walau bagaimanapun, "|" ialah metakarakter regex, jadi anda perlu melepaskannya sebagai "|" agar ia dianggap sebagai aksara literal untuk pemisahan.

Akhir sekali, pertimbangkan untuk menggunakan algoritma yang lebih cekap dengan menjana indeks berbeza rawak dan menggunakan lelaran senarai untuk mengalih keluar elemen dalam satu laluan. Ini akan meningkatkan kerumitan masa kepada O(N) dan bukannya O(N^2) semasa.

Atas ialah kandungan terperinci Mengapakah `List.remove()` Melemparkan `UnsupportedOperationException`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan