Енумератион вс Итератор
Постоји много структура података које дјелују као збирке на Јави, попут Вектора, Хасх табела и класа које имплементирају Јава Цоллецтионс Фрамеворк (тј. ХасхМап, ХасхСет, АрраиЛист, ТрееСет, ТрееМап, ЛинкедЛист, ЛинкедХасхМап и ЛинкедХасхСет). На Јави постоје бројни начини за итерацију кроз појединачне елементе објеката. Јава нуди два интерфејса како би олакшала овај задатак. Пописивање и Итератор су два од интерфејса који се налазе у пакету јава.утил који пружају функцију за набрајање кроз низове или објекте са скупом ставки. Попис је уведен у ЈДК 1.0, а Итератор који је уведен у ЈДК 1.2 практично дуплира функционалност пописивача (у оквиру збирке).
Шта је набрајање?
Пописивање је јавни интерфејс на Јави, уведен у ЈДК 1.0, који пружа могућност набрајања кроз низове елемената. Налази се под пакетом јава.утил. Када је сучеље Енумерације имплементирано од стране објекта, тај објект може генерисати низ елемената. Интерфејс за пописивање има две методе. Метода хасМореЕлементс () ће тестирати ако ово набрајање садржи више елемената и нектЕлемент () враћа следећи елемент у низу (ако постоји најмање још један). Другим речима, позивањем нектЕлемент () узастопно, програмер може приступити појединачним елементима у серији. На пример, за испис свих елемената у Вецтор в1 помоћу Енумератора, може се користити следећи исечак кода.
Набрајање е = в1.елементс ();
Док је (е.хасМореЛементс ())
Систем.оут.принтлн (е.нектЕлемент ());
Пописивач се такође може користити за дефинисање тока улаза у објекте СекуенцеИнпутСтреам.
Шта је Итератор?
Итератор је јавни интерфејс у пакету Јава.утил који омогућава итерирање кроз елементе колекцијских објеката који имплементирају Фрамеворк Цоллецтионс (као што су АрраиЛист, ЛинкедЛист, итд.). То је уведено у ЈДК 1.2 и заменио је Пописивач у оквиру Јава Цоллецтион Цоллецтион. Итератор има три методе. Метода хасНект () тестира да ли постоје преостали елементи у колекцији, а метода нект () враћа следећи елемент у низу. Метода ремове () може се користити за уклањање тренутног елемента из доње колекције. На пример, за испис свих елемената у Вецтор в1 помоћу Итератора, може се користити следећи исјечак кода.
Итератор и = в1.елементс ();
Док је (и.хасНект ())
Систем.оут.принтлн (е.нект ());
Која је разлика између набрајања и итератора?
Иако су, Енумератион и Итератор два интерфејса који се налазе у пакету јава.утил, који омогућавају итерирање / набрајање кроз елементе низа, имају своје разлике. Заправо, Итератор, који је уведен након пописивања, замењује Пописивање у оквиру Јава Цоллецтион Цоллецтион. За разлику од набрајања, Итератор није сигуран. То значи да истодобне модификације (у основној колекцији) нису дозвољене када се користи Итератор. Ово је веома корисно у окружењима с више навоја где увек постоји ризик од истовремених модификација. У случају истодобне модификације, објект Итератор ће бацити ЦонцуррентМодифицатионЕкцептион. Итератор има краћа имена метода у односу на Енумератор. Надаље, итератор има додатну функционалност брисања елемената током итерације (што није могуће помоћу Енумератора). Дакле, ако постоји потреба за уклањањем елемената из колекције, Итератор је једина опција која се може размотрити.