Увод у Итератор на Јави

Итератор је интерфејс који се користи за дохваћање елемената један по један у колекцији. Доступан је у Јава пакету који се зове Јава. утил пакет. АПИ за прикупљање имплементира итератор () методу и стога се подаци могу дохватити са сучеља као што су Мап, Лист, Куеуе, Декуе и Сет која су сва имплементирана из оквира колекције. Као што име сугерира, итератор на Јави понавља се кроз колекцију објеката.

Синтакса:

Iterator iterator()

Испод итератора је име објекта створено позивањем итератор () методе сучеља за прикупљање. „Цоллецтион“ је назив објекта колекције.

Iterator iter = collection.iterator();

Методе Итератор на Јави

Итератори у Јави имају 4 методе које се користе за кретање кроз колекције и проналажење потребних информација. Они су следећи:

  • хасНект (): Ово је метода која враћа логичку вриједност труе ако итерација има следећи елемент и бооле фалсе ако нема следећег елемента.
  • нект (): Ова метода враћа вриједност елемента присутну у наредној итерацији. Претпоставимо да нема елемената који се враћају у следећој итерацији, онда се баца „НоСуцхЕлементЕкцептион“.
  • ремове (): Ова метода уклања садашњи елемент који је итератор вратио из колекције. У случају да се ова метода зове претходна до следећа () метода, она баца "ИллегалСтатеЕкцептион".
  • форЕацхРемаининг (): Ова метода извршава операцију на свим преосталим елементима у колекцији док сви нису обрађени или док се не избаци изузетак. Такође, ово је метода коју је корпорација Орацле недавно увела у свом издању Јава СЕ 8.

Пример Итератора у Јави

Испод је пример Итератора на Јави:

Шифра:

import java.io.*;
import java.util.*;
public class IteratorExample (
public static void main(String() args)
(
ArrayList val = new ArrayList();
val.add("Iteration started");
val.add("Printing iteration1");
val.add("Printing iteration2");
val.add("Printing iteration3");
val.add("End of iteration");
// Iterates through the list
Iterator iter = val.iterator();
System.out.println("The values of iteration are as follows: ");
while (iter.hasNext())
System.out.println(iter.next() + " ");
System.out.println();
)
)

Излаз:

Изузеци бачени методама Итератора

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

1. нект () метода

Док се итерира кроз скуп елемената и дохваћа их овом методом, може се догодити следећи изузетак.

  • НоСуцхЕлементЕкцептион: То се дешава ако следећи () покуша да извуче елемент који не постоји на овој листи. Стога се увијек мора користити хасНект () прије позивања нект ().

2. метод уклањања ()

Овде се могу догодити две врсте изузетака:

  • ИллегалСтатеЕкцептион: Ако се метода ремове () позове прије следеће () методе, тада се изузеће ова изузетка. То је зато што метода покушава уклонити елемент који још није наведен следећом () методом и стога не успијева. Да бисте решили овај изузетак, следећи () мора бити позван да би се односио на прву ставку, а затим уклони () може бити позван да бисте исти уклонили са листе.
  • УнсуппортедОператионЕкцептион: Ова се изнимка обично избацује приликом покушаја модификације објекта листе додавањем или уклањањем операције која не подржава модификацију. На пример, када се матрица покуша претворити у листу од стране Арраис.асЛист баца ову изузетак. То је зато што ће објект Лист имати фиксну величину, јер га креира омотач из АрраиЛист-а, па модификације неће бити дозвољене. Да бисте решили овај проблем, претворите Арраис.асЛист у АрраиЛист или ЛинкедЛист објекат пре него што обавите било које операције попут додавања / уклањања на истом.

Синтакса:

//ArrayList is created from the list having fixed size
list = new ArrayList(list);
Iterator iter = list.iterator();
while(iter.hasNext())(
if( iter.next().equals("First iteration") )(
iter.remove();
)
)

Методе ЛистИтератор-а

Ове методе омогућавају итератору да пређе у оба правца објекта колекције. Ево неких од њих:

  • адд (): Ова метода убацује додану вредност објекта и враћа се када се позове следећа () метода.
  • хасНект (): Ова метода је иста као и она која се спомиње у типовима итератора, а која враћа бооле труе / фалсе у зависности од следећег елемента који има вредност или не.
  • хасПревиоус (): Ова метода је супротна хасНект () и враћа Боолеан труе ако листа има претходни елемент и обрнуто.
  • нект (): Ова метода преузима следећи елемент са дате листе.
  • превиоус (): Ова метода преузима претходни елемент са листе.
  • ремове (): Овим се брише садашњи елемент са листе. Када се ова метода назове било пре следеће () или претходне () функције, она баца "ИллегалСтатеЕкцептион".

Пример за ЛистИтератор

Испод је пример у АрраиЛист-у за ЛистИтератор.

Шифра:

import java.util.*;
public class IteratorExample (
public static void main(String args()) (
// Creating an array list
ArrayList array = new ArrayList();
// add elements to the array list
array.add("First element");
array.add("Second element");
array.add("Third element");
array.add("Fourth element");
array.add("Fifth element");
array.add("Sixth element");
// Displaying elements of an array
System.out.println("Printing input of the array: ");
Iterator iter = array.iterator();
while(iter.hasNext()) (
Object value = iter.next();
System.out.println(value + " ");
)
System.out.println();
// To update the elements of iteration
ListIterator listiter = array.listIterator();
while(listiter.hasNext()) (
Object value = listiter.next();
listiter.set(value + "+");
)
System.out.print("Updated array elements are as follows: ");
iter = array.iterator();
while(iter.hasNext()) (
Object value = iter.next();
System.out.print(value + " ");
)
System.out.println("\n");
// To display the contents in backward direction
System.out.println("Printing elements in backward direction: ");
while(listiter.hasPrevious()) (
Object value = listiter.previous();
System.out.print(value + " ");
)
System.out.println();
)
)

Излаз:

Предности итератора у Јави

Испод су предности Итератора:

  1. Подржава све класе под збирким интерфејсом.
  2. Методе итератора су прилично једноставне и једноставне за разумевање и имплементацију.
  3. Елементи колекције могу се лако модификовати (додати / уклонити) помоћу Итератора.
  4. Приступ елементима путем Итератора неће довести до изузетака током рада.
  5. Руковање подацима је ефикасно.
  6. Може истовремено понављати различите варијабле држањем стања итерације сваке променљиве одвојено.

Ограничења итератора у Јави

Испод су ограничења Итератора:

  1. Јава итератор може понављати само у једном смеру, тј.
  2. Не може се користити за истодобно успоређивање између две различите структуре података.
  3. Не може се користити за повратак елемента.
  4. Не дозвољава модификацију структуре елемента која се понавља, јер чува положај тог елемента.
  5. У неким случајевима може бити неефикасно, ако је директно прелазак елементима ефикаснији.

Закључак

Итератори су најчешће коришћени метод за дохваћање елемената из колекцијског интерфејса. Зове се Универсал Јава Цурсор јер је применљив у свим класама Цоллецтион.

Препоручени чланак

Ово је водич за Итератор на Јави. Овде смо расправљали о методама и примерима Итератора у Јави, заједно са његовим Ограничењима и предностима. Можете и да прођете кроз друге наше предложене чланке да бисте сазнали више -

  1. Увод у сорту хеап-а на Јави
  2. Превладавање у Јави (примери)
  3. Итератори у Ц # са предностима и недостацима
  4. Топ 10 питања о интервјуу Јава Цоллецтион
  5. Тхров вс Тхров | Топ 5 разлика које би требало да знате

Категорија: