Домой Учебники по Java и J2EE Java Iterator, основы ListIterator и исключение ConcurrentModification

Java Iterator, основы ListIterator и исключение ConcurrentModification

1154

У вас есть эти вопросы?

  • Java — как избежать ConcurrentModificationException
  • итератор исключения одновременной модификации следующий
  • исключение одновременной модификации в Java HashMap

В предыдущей теме мы узнали, как перебирать класс Java Collection ArrayList. Также используется наилучшая практика, чтобы избежать возможной нехватки памяти (OOM) .

В этом уроке мы увидим некоторые основные основы Java Iterator и возможные ConcurrentModificationException ,

Представленный в выпуске Java JDK 1.2, java.util.Iterator Интерфейс позволяет выполнять итерацию классов Collection. Каждый итератор предоставляет next() а также hasNext() метод, и может дополнительно поддерживать remove() метод. Итераторы создаются соответствующим классом контейнера, как правило, методом с именем iterator() , Это улучшение интерфейса Enumeration.

Методы итератора

Итератор определяет три метода, один из которых является необязательным .

Результат

метод

Описание

б = it.hasNext () Значение true, если для итератора больше элементов.
obj = it.next () Возвращает следующий объект. Если к общему списку обращаются, итератор возвращает что-то типа списка. Предварительные универсальные итераторы Java всегда возвращали тип Object , поэтому обычно требовалось снижение.
it.remove () Удаляет самый последний элемент, который был возвращен следующим. Не все коллекции поддерживают удаление. UnsupportedOperationException будет выброшено, если коллекция не поддерживает remove ().

Важные моменты:

  • Итераторы unidirectional , Мы можем повторять только в одном направлении.
  • Итерация может быть выполнена только один раз. Если вы дойдете до конца серии, все готово. Если нам нужно повторить итерацию, мы должны получить новый итератор.

Разница между интерфейсами Iterator и Enumeration

  1. Метод remove () введен в итераторе. Используя этот метод, мы можем удалить элемент из базовой коллекции, которую мы повторяем.
  2. Перечисление имеет два метода, и оба доступны в итераторе. Имена методов для них обоих сокращены.
ЧИТАТЬ ТАКЖЕ:  Java: пример простого потока - создание и запуск потоков

Методы ListIterator

ListIterator реализуется только классами, которые реализуют List интерфейс ( ArrayList , LinkedList , а также Vector ). ListIterator обеспечивает следующее.

Результат

метод

Описание

Прямая итерация
б = it.hasNext () Значение true, если в коллекции есть следующий элемент.
obj = it.next () Возвращает следующий объект.
Обратная итерация
б = it.hasPrevious () истина, если есть предыдущий элемент.
obj = it.previous () Возвращает предыдущий элемент.
Получение индекса элемента
я = it.nextIndex () Возвращает индекс элемента, который будет возвращен последующим вызовом next ().
я = it.previousIndex () Возвращает индекс элемента, который будет возвращен последующим вызовом previous ().
Необязательные методы модификации. UnsupportedOperationException выбрасывается, если не поддерживается.
it.add (OBJ) Вставляет obj в коллекцию перед следующим элементом, который будет возвращен next (), и после элемента, который будет возвращен previous ().
it.set () Заменяет самый последний элемент, который был возвращен next или previous ().
it.remove () Удаляет самый последний элемент, который был возвращен next () или previous ().

ConcurrentModificationException Basic

Мы не можем добавлять или удалять элементы в базовую коллекцию, когда мы используем итератор.

CrunchifyJavaIteratorConcurrentModificationException.java

Джава
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
пакет crunchify. ком . учебник ;
Импортировать Java. Util. ArrayList ;
/ **
* @author Crunchify.com
*
* /
общественности учебный класс CrunchifyJavaIteratorConcurrentModificationException {
общественности статический недействительным main ( Строка [ ] аргументы ) {
ArrayList Компания знак равно новый ArrayList ( ) ;
компания. добавить ( eBay ) ;
компания. добавить ( «Paypal» ) ;
компания. добавить ( Google ) ;
за ( Строка s : компания ) {
Система. вне. println ( s ) ;
компания. добавить ( «Yahoo» ) ;
}
}
}

Выход Eclipse Console:

Java Iterator, основы ListIterator и исключение ConcurrentModification

0.00 (0%) 0 votes