ඔබට පහත සඳහන් දේ කළ නොහැකි බව අපි කවුරුත් දනිමු 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);
}
ඇත්ත වශයෙන්ම, මෙහි ප්රති results ලය වනුයේ:
Exception in thread "main" java.util.ConcurrentModificationException
බහු නූල් එය සිදු නොකලත්. කෙසේ හෝ වේවා.
මෙම ගැටලුවට හොඳම විසඳුම කුමක්ද? මෙම ව්යතිරේකය විසි නොකර මම ලූපයක එකතුවෙන් අයිතමයක් ඉවත් කරන්නේ කෙසේද?
මම ද Collection
මෙහි අත්තනෝමතික ලෙස භාවිතා කරමි , අවශ්යයෙන්ම නොවේ ArrayList
, එබැවින් ඔබට විශ්වාසය තැබිය නොහැක get
.