Різниця між інтерфейсом ітератора та перерахунку на Java

Автор: Laura McKinney
Дата Створення: 2 Квітень 2021
Дата Оновлення: 10 Травень 2024
Anonim
ЗАСОБИ ПЛАНУВАННЯ ПРОЄКТІВ. MS PROJECT. Лекція 1
Відеоролик: ЗАСОБИ ПЛАНУВАННЯ ПРОЄКТІВ. MS PROJECT. Лекція 1

Зміст


Три курсори, які використовуються для доступу елементів до будь-якої колекції по одному Перерахування, ітератор та ListIterator. Хоча Iterator та Enumerator призначені для виконання однієї і тієї ж роботи. Проте вони відрізняються один від одного в тому сенсі, що перерахування має доступ лише до елементів колекції. З іншого боку, Iterator може читати, а також видаляти елементи з колекції. Важлива відмінність ітератора від перерахунку полягає в тому, що Перерахування не можна застосовувати до колекційних класів, це застосовується лише для застарілих класів. З іншого боку, Ітератор застосовний до класів колекції, отже, його називають універсальним курсором. Дізнаємось ще про різницю між Ітератором та Перерахуванням за допомогою таблиці порівняння, показаної нижче.

  1. Порівняльна діаграма
  2. Визначення
  3. Ключові відмінності
  4. Висновок

Порівняльна діаграма

Основа для порівнянняІтератор Перерахування
ОсновніІтератор - це універсальний курсор, оскільки він застосований для всіх класів колекції.Перерахування не є універсальним курсором, оскільки воно стосується лише застарілих класів.
ДоступЗа допомогою Iterator ви можете прочитати та видалити елементи колекції.Використовуючи перерахування, ви можете читати лише елементи колекції.
Методиpublic boolean hasnext ();
громадські об'єкти поруч ();
public void remove ();
public boolean hasMoreElements ();
публічний об'єкт nextElement ();
ОбмеженняІтератор - однонаправлений курсор доступу вперед.
Ітератор не може замінити жоден елемент колекції.
Ітератор не може додати жодного нового елемента до колекції.
Перерахування - однонаправлений курсор доступу вперед.
Підрахунок підтримує лише застарілі класи.
Перерахування має лише доступ лише для читання до елементів колекції.
ПодолатиЩоб подолати обмеження Iterator, ви повинні вибрати ListIterator.Щоб подолати обмеження перерахування, потрібно вибрати Iterator.


Визначення інтерфейсу ітератора

Ітератор є інтерфейсом в рамках колекції. Оскільки Iterator застосовний до всіх класів колекції, він називається універсальним курсором. Це курсор, який використовується для доступу елементів до колекції один за одним. Використовуючи Iterator, ви можете отримати елементи з колекції, і якщо ви хочете, ви також можете видалити елементи з колекції. Об'єкт Iterator можна створити, як зазначено нижче.

Iterator itr = Collc.iterator ();

Змінна Itr є об'єктом Ітератора. Collc - це будь-який об'єкт колекції, який повинен бути циклічним або ітералізованим за допомогою об'єкта (itr) Ітератора. The ітератор () - метод, який використовується для створення об’єкта ітератора. У Ітераторі є три методи, як показано нижче.

public boolean hasnext (); громадський об’єкт next (); public void remove ();

Перший метод hasnext () перевіряє, чи має в колекції якісь елементи чи ні. Якщо у колекції є елементи, вона повернеться true, ще повернеться false. Другий метод наступний () використовується для отримання наступного елемента в колекції. Третій спосіб видалити () використовується для видалення елементів із колекції.


Ітератор може подорожувати колекцією лише у напрямку вперед, він не може рухатися назад під час подорожі. Ітератор може видалити елемент із колекції, але не має можливості замінити будь-який існуючий елемент на новий елемент, і він не може додати будь-якого нового елемента до колекції. Для подолання цих обмежень можна перейти до ListIterator інтерфейсу.

Визначення інтерфейсу перерахування

Перерахування - це інтерфейс, застосовний до спадщина класи, і його не можна застосувати до жодного класу колекції. Отже, це не універсальний курсор. Перерахування один за одним отримує елемент (об’єкт) з колекції. Об'єкт перерахування має доступ лише до елементів колекції лише для читання. Об'єкт перерахування не може змінити жоден елемент із колекції. Подивимось, як створити об’єкт перерахування, подивимось.

Перерахування er = Vect.elements ();

Змінна е є об'єктом перерахування. The Вект - це об'єкт векторного класу, який повинен бути пройдений об'єктом (er) Перерахування. Метод елемент () використовується для створення об'єкта перерахування. У інтерфейсі перерахування є лише два способи, як показано нижче.

public boolean hasMoreElements (); public nextElement ();

Перший метод hasMoreElements () використовується для перевірки стану колекції, чи є в ній елементи чи вона порожня. Якщо колекція містить елементи, метод hasMoreElements () return true true return false. Другий метод nextElement () використовується для отримання елементів по колекції по одному. Коли траверсія завершена, кидається метод nextElement () NoSuchElementException. Об'єкт перерахування рухається лише в напрямку вперед. Він не може додати або видалити або замінити жоден елемент колекції. Щоб подолати ці обмеження Перерахування, потрібно вибрати Iterator.

  1. Основна відмінність Iterator від Enumeration полягає в тому, що Iterator є універсальним курсором, може використовуватися для ітерації будь-якого об'єкта колекції. З іншого боку, Перерахування використовується лише для переходу об’єкта спадкового класу.
  2. Об'єкт перерахування має лише доступ лише для читання до елементів колекції. Однак об’єкт Iterator може прочитати та видалити елементи з колекції.
  3. Існує два способи ітератора: один для перевірки стану колекції та один для отримання елементів із колекції. Окрім методів перерахунку, Iterator має ще один метод видалення елементів із колекції.
  4. Обмеження перерахування - це прямий однонаправлений курсор, він має доступ лише для читання, і його можна застосувати до класів колекції. З іншого боку, Iterator не може замінити або додати жодного нового елемента в колекцію, як і перерахування його також перенаправляє однонаправлений курсор.
  5. Обмеження перерахування вирішує Iterator, а обмеження Iterator - ListIterator.

Висновок:

На сьогодні курсор Iterator та ListItertaor використовуються, оскільки вони є універсальним курсором і значно ефективніші, ніж перерахування.