Junior — Middle
Ի՞նչ է տեղի ունենում, եթե խոչընդոտենք տարրերի հեռացմանը հավաքածուից նրա շրջելիս։
sobes.tech AI
Պատասխան AI-ից
Եթե Java-ում հավաքածուի վրա կրկնություն կատարելիս փորձեք տարրերը ուղղակիորեն հեռացնել (օրինակ՝ հավաքածուի մեթոդով), դա կհանգեցնի ConcurrentModificationException-ի։ Դա տեղի է ունենում, քանի որ ինտերատորը հետևում է հավաքածուի փոփոխություններին, և նրա մեթոդներից դուրս հեռացումները խախտում են կրկնության ամբողջականությունը։
Սխալ եղանակը տարրերը հեռացնելու համար կրկնության ժամանակ՝ օգտագործել ինտերատորի remove() մեթոդը՝
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if (պայման) {
iterator.remove(); // անվտանգ հեռացում
}
}
Այս կերպ հեռացումը չի խանգարի ինտերատորի աշխատանքին և սխալ չի առաջացնի։