


Bagaimana untuk Mengelakkan ConcurrentModificationException Apabila Menambah pada ArrayList Semasa Lelaran dalam Android?
Dec 03, 2024 am 07:52 AMConcurrentModificationException semasa menambah pada ArrayList dalam Android
ConcurrentModificationException biasanya ditemui semasa membuat pengubahsuaian pada senarai yang diulang. Pengecualian ini boleh timbul dalam pelbagai senario, salah satunya ialah apabila mengubah ArrayList menggunakan Iterator.
Dalam coretan kod yang disediakan, isu ini nyata semasa acara OnTouchEvent apabila menambahkan Elemen baharu pada mElements ArrayList:
for (Iterator<Element> it = mElements.iterator(); it.hasNext();){ Element element = it.next(); // ... if(element.cFlag){ mElements.add(new Element("crack",getResources(), (int)touchX,(int)touchY)); element.cFlag = false; } }
ConcurrentModificationException dibuang kerana senarai sedang diubah suai (dengan menambahkan elemen) semasa ia diulang menggunakan Iterator.
Untuk menangani isu ini, adalah disyorkan untuk menggunakan Senarai berasingan untuk menyimpan elemen yang perlu ditambah semasa lelaran:
List<Element> thingsToBeAdded = new ArrayList<Element>(); for (Iterator<Element> it = mElements.iterator(); it.hasNext();) { Element element = it.next(); // ... if (element.cFlag) { // Instead of adding elements directly to mElements, add them to thingsToBeAdded thingsToBeAdded.add(new Element("crack", getResources(), (int) touchX, (int) touchY)); element.cFlag = false; } } mElements.addAll(thingsToBeAdded);
Dengan menggunakan pendekatan ini, pengubahsuaian kepada senarai asal boleh ditangguhkan sehingga selepas mengulangi elemen, dengan itu mengelakkan ConcurrentModificationException.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan ConcurrentModificationException Apabila Menambah pada ArrayList Semasa Lelaran dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru

Bagaimanakah saya dapat melaksanakan teknik pengaturcaraan berfungsi di Java?

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Isu Tetap

Merevolusikan saluran paip data dengan Apache Kafka pada tahun 2025
