Разлика между Iterator и Enumeration интерфейс в Java

Автор: Laura McKinney
Дата На Създаване: 2 Април 2021
Дата На Актуализиране: 17 Може 2024
Anonim
Java. Об Iterator и Iterable c примерами.
Видео: Java. Об Iterator и Iterable c примерами.

Съдържание


Трите курсора, които се използват за достъп до елементите от всяка колекция един по един, са Изброяване, Iterator и ListIterator, Въпреки това, Iterator и Enumerator са предназначени за извършване на една и съща работа. Все пак те се различават един от друг в смисъл, че изброяването има достъп само за четене до елементите в колекцията. От другата страна, Iterator може да чете, както и да премахва елементите от колекцията. Важната разлика между итератора и изброяването е, че изброяване не може да се приложи в класовете за колекция, той е приложим само за наследените класове. От друга страна Итераторът е приложим за класовете за колекция, поради което се обозначава като универсален курсор. Нека научим още малко разлика между Iterator и Enumeration с помощта на сравнителната диаграма, показана по-долу.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

Основа за сравнениеИтераторът изброяване
ОсновенIterator е универсален курсор, тъй като е приложим за всички класове за събиране.Изброяването не е универсален курсор, тъй като се прилага само за наследени класове.
достъпС помощта на Iterator можете да четете и премахвате елементите в колекцията.С помощта на изброяване можете да четете само елементите в колекцията.
методипубличен булев hasnext ();
следващи публични обекти ();
публично невалидно премахване ();
public boolean hasMoreElements ();
публичен обект nextElement ();
ограничаванеIterator е еднопосочен курсор за достъп напред.
Iterator не може да замени нито един елемент от колекцията.
Iterator не може да добави никакъв нов елемент в колекцията.
Изброяването е еднопосочен курсор за достъп напред.
Изчисляването поддържа само наследени класове.
Изброяването има достъп само до четене до елементите в колекция.
ПреодолейтеЗа да преодолеете ограниченията на Iterator, трябва да изберете ListIterator.За да преодолеете ограниченията на изброяване, трябва да изберете Iterator.


Дефиниция на Iterator интерфейс

Итераторът е интерфейс в рамката за събиране. Тъй като Iterator е приложим за всички класове за събиране, той е посочен като универсален курсор. Това е курсорът, използван за достъп до елементите в колекцията един по един. Използвайки Iterator, можете да изтеглите елементите от колекцията и ако искате можете също да премахнете елементите от колекцията. Обектът на Iterator може да бъде създаден, както е дадено по-долу.

Iterator itr = Collc.iterator ();

Променливата ITR е обект на Iterator. Collc е всеки обект за събиране, който трябва да се циклира или повтори с помощта на обекта (itr) на итератора. Най- итератор () е методът, използван за създаване на итераторски обект. В Iterator има три метода, както е показано по-долу.

публичен булев hasnext (); публичен обект next (); публично невалидно премахване ();

Първият метод hasnext () проверява дали колекцията има елементи в нея или не. Ако колекцията има елементи, тя ще се върне вярно, друго ще се върне невярно. Вторият метод следващия() се използва за извличане на следващия елемент в колекцията. Третият метод Премахване() се използва за изтриване на елементите от колекцията.


Iterator може да пътува в колекция само в посока напред, тя не може да се движи назад, докато пътува. Iterator може да премахне елемента от колекцията, но няма възможност да замени всеки съществуващ елемент с нов елемент, нито може да добави нов елемент в колекцията. За да преодолеете тези ограничения, можете да отидете за ListIterator интерфейс.

Определение на изброяващия интерфейс

изброяване е интерфейсът, приложим за завещание класове и той не може да бъде приложен към никой клас на колекция. Следователно, това не е универсален курсор. Изброяване извлича един по един елемент (обект) от колекцията. Обектът за изброяване има достъп само за четене до елементите на колекцията. Обектът за изброяване не може да промени нито един елемент от колекцията. Нека да видим как да създадем изброяващ обект, да разгледаме.

Изброяване er = Vect.elements ();

Променливата НЛП е обект на изброяване. Най- Vect е обектът на векторния клас, който трябва да бъде пресечен от обекта (er) на преброяване. Методът елемент () се използва за създаване на обект на изброяване. В интерфейса за изброяване има само два метода, както е показано по-долу.

public boolean hasMoreElements (); публично nextElement ();

Първият метод hasMoreElements () се използва за проверка на състоянието на колекцията дали има елементи в нея или е празна. Ако колекцията има елементите, методът hasMoreElements () връща true true return return false. Вторият метод nextElement () се използва за извличане на елементи от колекцията един по един. Когато преминаването е завършено, методът nextElement () хвърля NoSuchElementException, Обектът за изброяване се движи само в посока напред. Той не може да добави или премахне или замени нито един елемент от колекцията. За да преодолеете тези ограничения на изброяването, трябва да изберете Iterator.

  1. Основната разлика между Iterator и Enumeration е, че Iterator е универсален курсор, може да се използва за повторение на всеки обект за събиране. От друга страна, Изброяването се използва само за преминаване на обект от наследен клас.
  2. Обектът за изброяване има само достъп до четене до елементите в колекцията. Обектът на Iterator обаче може да чете и премахва елементите от колекцията.
  3. Има два метода на итератор, един за проверка на състоянието на колекцията и един за извличане на елементите от колекцията. В допълнение към методите за изброяване Iterator има още един метод за премахване на елементите от колекцията.
  4. Ограничения на изброяването е дали е насочен напред еднопосочен курсор, има достъп само за четене и може да се прилага към класовете за събиране. От друга страна, Iterator не може да замени или добави всеки нов елемент в колекцията и подобно на Enumeration също така насочва еднопосочен курсор.
  5. Ограничаването на изброяването се решава от Iterator, а ограниченията на Iterator се решават от ListIterator.

Заключение:

В наши дни курсорът Iterator и ListItertaor се използва, тъй като те са универсален курсор и са много по-ефективни от Enumeration.