Въведение в Iterator на Java
Итератор е интерфейс, който се използва за извличане на елементи един по един в колекция. Предлага се в пакет Java, наречен Java. пакет util. API за събиране реализира метода iterator () и следователно данните могат да бъдат извлечени от интерфейси като Map, List, Queue, Deque и Set, които са реализирани от рамката за събиране. Както подсказва името, итератор в Java повтаря чрез колекция от обекти.
Синтаксис:
Iterator iterator()
Под итератора е името на обект, създаден чрез извикване на метода iterator () на интерфейс за събиране. „Колекция“ е името на колекционния обект.
Iterator iter = collection.iterator();
Методи на итератор в Java
Итераторите имат 4 метода в Java, които се използват за преминаване през колекции и извличане на необходимата информация. Те са както следва:
- hasNext (): Това е метод, който връща boolean true, ако итерацията има следващ елемент и boolean false, ако няма присъстващ елемент следващ.
- next (): Този метод връща стойността на елемента, присъстваща в идните итерации. Да предположим, че няма елементи, които да бъдат върнати в следващата итерация, след това се изхвърля „NoSuchElementException“.
- Remove (): Този метод премахва настоящия елемент, върнат от итератора от колекцията. В случай, че този метод бъде извикан предишен до next () метод, той изхвърля „IllegalStateException“.
- forEachRemaining (): Този метод изпълнява операцията на всички останали елементи в колекцията, докато всички те не бъдат обработени или докато не бъде хвърлено изключение. Също така, това е метод, нововъведен от Oracle Corporation в тяхното издание на Java SE 8.
Пример за Iterator в Java
По-долу е примерът на Iterator в Java:
Код:
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. следващ () метод
Докато итритирате чрез набор от елементи и ги извличате по този метод, може да се получи следното изключение.
- NoSuchElementException: Това се случва, ако next () се опита да извлече елемент, който не съществува в този списък. Следователно винаги трябва да се използва hasNext (), преди да извикате next ().
2. метод за премахване ()
Има два вида изключения, които могат да се появят тук:
- IllegalStateException: Ако методът remove () се извика преди следващия () метод, тогава това изключение се хвърля. Това е така, защото методът се опитва да премахне елемент, който все още не е посочен от метода next () и следователно се проваля. За да разрешите това изключение, следващият () трябва да бъде извикан, за да се обърне към първия елемент и след това премахване () може да бъде повикан, за да премахнете същото от списъка.
- UnsupportedOperationException: Това изключение обикновено се хвърля, когато се опитвате да модифицирате списък с обект чрез добавяне или премахване на операция, която не поддържа модификация. Например, когато масивът се опитва да конвертира в списък от Arrays.asList хвърля това изключение. Това е така, защото обектът List ще има фиксиран размер, тъй като е създаден от обвивката от ArrayList и следователно модификацията няма да бъде разрешена. За да разрешите този проблем, преобразувайте Arrays.asList в ArrayList или LinkedList обекта, преди да извършите каквито и да е операции като добавяне / премахване на същия.
Синтаксис:
//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();
)
)
Методи на ListIterator
Тези методи позволяват на итератора да премине в двете посоки на обекта за събиране. Следват някои от тях:
- add (): Този метод вмъква дадената стойност на обекта и се връща, когато бъде извикан следващият () метод.
- hasNext (): Този метод е същият като този, споменат в типовете итератор, който връща Boolean true / false в зависимост от това дали следващият елемент има стойност или не.
- hasPrevious (): Този метод е противоположен на hasNext () и връща Boolean true, ако списъкът има предишен елемент и обратно.
- next (): Този метод извлича следващия елемент от дадения списък.
- предишен (): Този метод извлича предишния елемент от списъка.
- delete (): Изтрива настоящия елемент от списъка. Когато този метод бъде извикан или преди следваща () или предишна () функция, той хвърля „IllegalStateException“.
Пример за ListIterator
По-долу е даден пример в ArrayList за ListIterator.
Код:
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();
)
)
изход:
Предимства на Iterators в Java
По-долу са предимствата на Iterators:
- Той поддържа всички класове в интерфейса на Collection.
- Методите на итератора са доста прости и лесни за разбиране и изпълнение.
- Елементите на колекция могат лесно да бъдат модифицирани (добавяне / премахване) с помощта на Iterators.
- Достъпът до елементи чрез Iterators няма да доведе до изключения по време на изпълнение.
- Обработката на данни е ефективна.
- Той може да повтаря едновременно над различни променливи, като отделно държи състоянието на итерация на всяка променлива.
Ограничения на Iterators в Java
По-долу са ограниченията на Iterators:
- Java итераторът може да итератира само в една посока, т.е.
- Не може да се използва за итерация между две различни структури от данни едновременно.
- Тя не може да се използва за обратно проследяване на елемент.
- Тя не позволява промяна на структурата на елемента да се повтаря, тъй като той съхранява позицията на него.
- В някои случаи може да е неефективно, ако преминаването през елементите е по-ефективно.
заключение
Итераторите са най-често използваният метод за извличане на елементи от интерфейса за събиране. Нарича се Universal Java Cursor, тъй като е приложим във всички класове на Collection.
Препоръчителен член
Това е ръководство за Iterator на Java. Тук обсъждаме методите и примерите на Iterator в Java, заедно с неговите Ограничения и предимства. Можете да разгледате и другите ни предложени статии, за да научите повече -
- Въведение в сортирането на Heap в Java
- Отмяна на Java (примери)
- Итератори в C # с предимства и недостатъци
- Топ 10 въпроса за интервю за Java Collection
- Хвърли срещу Хвърли | Топ 5 разлики, които трябва да знаете