Фаил Фаст анд Фаил Сафе Итераторс у Јави: у чему је разлика?



Овај чланак о „Фаил Фаст анд Фаил Сафе Итераторс“ помоћи ће вам да детаљно упоредите ова два итератора са релевантним примерима.

подржавају две врсте итератора, први се брзо отказује, а други је сигуран. Они играју виталну улогу када је реч о руковању изузецима на Јави. У овом чланку о „Фаил Фаст Анд Фаил Сафе Итераторс“ анализираћемо рад два итератора као и суштинску разлику између њих.

Следе смернице о којима ће се расправљати у овом чланку:





Пре детаљног објашњења, упознајмо се са концептом истовремене модификације.

Истовремена модификација

Када се појединачна нит (или више нити) превуче преко колекције, она може променити структуру колекције, било додавањем или брисањем елемента у колекцији, било ажурирањем вредности елемента на одређеној позицији. Овај процес је познат као истовремена модификација.



Погледајмо брзо два система која се тичу горње теме, пре него што уђемо у детаље истог,

Фаил Фаст Сисетм:

Систем је означен као систем за брзу грешку ако се искључи одмах након појаве грешке. Операције се тренутно прекидају и откривају се грешке или грешке.

Систем без грешке:

Систем је означен као систем који је сигуран од кварова, ако настави да ради чак и након што се догоди грешка или грешка. Не прекидају операцију и сакривају грешке уместо да их разоткривају.



како инсталирати пхп на Виндовс 10

Итератори у јави омогућавају нам да прелазимо преко предмета Колекције. Итератори које колекција враћа или брзо пропадају или су безбедни по својој природи.

Фаил Фаст Итератор

Неуспешни брзи итератори у Јави онемогућавају било коју врсту структурних модификација колекције док се превлаче по њој. Структурна модификација укључује додавање, уклањање или ажурирање било ког елемента у колекцији док се превлачи по њему. Итератор баца ЦонцуррентМодифицатионЕкцептион, ако је колекција структурно модификована током процеса итерације.

Међутим, мора се напоменути да ако се ставка уклони помоћу сопствене методе итератора, тј. Методом ремове (), неће се изузети изузеци. То је потпуно сигуран процес. будите сигурни да имате јава инсталиран на вашем систему

Пример Фаил Фаст Итератор:

импорт јава.утил.ХасхМап импорт јава.утил.Итератор импорт јава.утил.Мап јавна класа ФаилФастЕкампле {публиц статиц воид маин (Стринг [] аргс) {Мап монтхИндек = нев ХасхМап () монтхИндек.пут ('1', 'Јануари ') монтхИндек.пут (' 2 ',' Фебруари ') монтхИндек.пут (' 3 ',' Марцх ') Итератор итератор = монтхИндек.кеиСет (). итератор () вхиле (итератор.хасНект ()) {Систем.оут .принтлн (монтхИндек.гет (итератор.нект ())) // додавање елемента у Мап // изузетак ће бити бачено на следећи позив // методе нект (). монтхИндек.пут ('4', 'Април')}}}

Излаз:

Изузетак у нити „маин“ јава.утил.ЦонцуррентМодифицатионЕкцептион

на јава.утил.ХасхМап $ ХасхИтератор.нектЕнтри (непознати извор)

Хајде сада да погледамо Фаил Сафе Итератор,

Фаил Сафе Итератор

За разлику од Фаил Фаст итератора, Фаил Сафе итератори не изузимају изузетке ако је колекција измењена током процеса итерације. То је због чињенице да се понављају на клону колекције, уместо на стварној колекцији. Структурне модификације извршене на стварној колекцији остају непримећене.

Међутим, треба приметити да не постоји ствар уистину Фаил Сафе Итератор. Било би прикладно да се то означи као слабо доследно. То једноставно значи то ако колекција је измењена током процеса итерације, оно што Итератор види је слабо загарантовано. Ово понашање се разликује за различите колекције и документовано је у Јавадоцс.

Пример неуспешног итератора:

јавна класа ФаилСафеЕкампле {публиц статиц воид маин (Стринг [] аргс) {ЦонцуррентМап монтхИндек = нев ЦонцуррентХасхМап () монтхИндек.пут ('1', 'Јануари') монтхИндек.пут ('2', 'Фебруари') монтхИндек.пут ( '3', 'Марцх') Итератор итератор = монтхИндек.кеиСет (). Итератор () вхиле (итератор.хасНект ()) {Систем.оут.принтлн (монтхИндек.гет (итератор.нект ())) монтхИндек.пут ( '4', 'Април')}}}

Излаз:

  • Јануара
  • Фебруара
  • Марта

Коначно, у овом чланку бисмо упоредили ове итераторе,

Разлике: Фаил Фаст и Фаил Сафе Итератор

Доље су дате основне разлике између два итератора:

Параметри Фаил Фаст Итератор Фаил Сафе Итератор
Баците изузетак ЦонцуррентМодифицатион

Да, бацају ЦоцуррентМодифицатионЕкцепти-он ако је колекција измењена док се превлачи преко ње.

Не, они не изузимају никакав изузетак ако је колекција измењена док се превлачи по њој.

Клонирајте колекцију

Не, они користе оригиналну колекцију за прелазак преко елемената.

Да, за копирање користе копију оригиналне колекције.

Мемори Оверхеад

Не, не захтевају додатну меморију.

Да, потребна им је додатна меморија за клонирање колекције.

Примери

ХасхМап, Вецтор, АрраиЛист, ХасхСет

ЦопиОнВритеАрраиЛист

Ови итератори су јединствени и преко потребни у свестраном језику Јава. Иако је сигурно у квару, има и утешни прстен, итератор брзог квара се показао робусним.

Ово доводи до краја овог чланка. у случају да желите да сазнате више, погледајте од Едуреке. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА осмишљен је тако да вам пружи предност у Јава програмирању и да вас оспособи за основне и напредне Јава концепте заједно са различитим Јава оквирима попут Хибернате & Спринг.

Имате питање за нас? Молимо вас да га спомињете у одељку за коментаре овог блога „Фаил Фаст вс Фаил Сафе“ и јавићемо вам се што је пре могуће.