Rumah >Java >javaTutorial >Cara membetulkan: Ralat Koleksi Java: Pengecualian traversal koleksi
Cara menyelesaikan: Ralat Koleksi Java: Pengecualian Traversal Koleksi
Pengenalan:
Dalam pembangunan Java, koleksi adalah struktur data yang sangat biasa digunakan untuk menyimpan dan memanipulasi set data. Walau bagaimanapun, apabila menggunakan koleksi untuk operasi traversal, pengecualian traversal koleksi sering ditemui. Artikel ini menerangkan punca dan penyelesaian masalah ini, dan menyediakan contoh kod yang sepadan.
1. Punca pengecualian traversal koleksi:
Apabila kami menggunakan iterator atau untuk setiap gelung untuk melintasi koleksi, jika koleksi diubah suai semasa proses traversal (seperti menambah atau memadam elemen), pengecualian ConcurrentModificationException akan dilemparkan. Ini kerana, semasa proses traversal, iterator atau untuk setiap gelung akan mengekalkan pembilang untuk mengesan sama ada struktur koleksi telah berubah dan akan membuang pengecualian sebaik sahaja perubahan ditemui.
2. Penyelesaian:
List<String> list = new ArrayList<>(); // 添加元素 list.add("A"); list.add("B"); list.add("C"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); if (item.equals("B")) { iterator.remove(); // 删除元素 } }
List<String> list = new ArrayList<>(); // 添加元素 list.add("A"); list.add("B"); list.add("C"); for (int i = list.size() - 1; i >= 0; i--) { String item = list.get(i); if (item.equals("B")) { list.remove(i); // 删除元素 } }
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>(); // 添加元素 map.put("A", 1); map.put("B", 2); map.put("C", 3); for (Map.Entry<String, Integer> entry : map.entrySet()) { if (entry.getValue() == 2) { map.remove(entry.getKey()); // 删除元素 } }
Kesimpulan:
Pengecualian traversal koleksi disebabkan oleh pengubahsuaian koleksi semasa proses traversal. Untuk menyelesaikan masalah ini, kita boleh menggunakan Iterator untuk melintasi koleksi dan menggunakan kaedah remove(), gunakan gelung normal for untuk melintasi koleksi dan gunakan kaedah remove() List, atau gunakan kelas koleksi serentak. Memilih penyelesaian yang sesuai boleh mengelakkan masalah pengecualian traversal kutipan dengan berkesan dan memastikan operasi normal program.
Jumlah bilangan perkataan: 437 perkataan
Atas ialah kandungan terperinci Cara membetulkan: Ralat Koleksi Java: Pengecualian traversal koleksi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!