আমরা সবাই জানি যে কারণে আপনি নিম্নলিখিতটি করতে পারবেন না ConcurrentModificationException
:
for (Object i : l) {
if (condition(i)) {
l.remove(i);
}
}
তবে এটি দৃশ্যত কখনও কখনও কাজ করে তবে সবসময় না। এখানে কিছু নির্দিষ্ট কোড রয়েছে:
public static void main(String[] args) {
Collection<Integer> l = new ArrayList<>();
for (int i = 0; i < 10; ++i) {
l.add(4);
l.add(5);
l.add(6);
}
for (int i : l) {
if (i == 5) {
l.remove(i);
}
}
System.out.println(l);
}
এটি অবশ্যই ফলাফল:
Exception in thread "main" java.util.ConcurrentModificationException
যদিও একাধিক থ্রেড এটি করছে না। যাই হোক।
এই সমস্যার সর্বোত্তম সমাধান কি? এই ব্যতিক্রমটি না ছুঁড়ে আমি কীভাবে সংগ্রহ থেকে কোনও লুপে কোনও আইটেম সরিয়ে ফেলতে পারি?
আমি Collection
এখানেও একটি স্বেচ্ছাচারিতা ব্যবহার করছি , অগত্যা একটি নয় ArrayList
, যাতে আপনি নির্ভর করতে পারবেন না get
।