Rumah >Java >javaTutorial >Mengapakah `List.remove()` Melemparkan `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));
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!