Итератор имеет метод ---> hasNext(), который возвращает логическое значение, он имеет следующий(), который возвращает элемент. Может ли кто-нибудь сказать, если Iterator
- это интерфейс, то как его абстрактные методы возвращают значение? Что такое внутренняя реализация?Интерфейс итератора с абстрактными методами hasNext() и next()?
ответ
Ну, реализация зависит от того, как вы получаете объект Iterator. Например, если у вас есть
List<String> list = new ArrayList<>();
Iterator<String> iterator = list.iterator();
вы получите объект класса Itr
, который является частным классом ArrayList
. Или для
List<String> list = new ArrayList<>();
ListIterator<String> iterator = list.listIterator();
вы получите объект ListItr
. Аналогичные вещи случаются для Set
. Все, что вам действительно нужно, это посмотреть на источники JDK.
Iterator - это интерфейс, и весь объект коллекции java имеет свою собственную реализацию (т. Е. Новый интерфейс IteratorType, реализующий интерфейс Iterator) в классе.
Это нормально , Но не могли бы вы дать мне код, где мы реализуем hasNext(). – Himanshu
Интерфейс может быть реализован многими различными классами. Это зависит от того, какую коллекцию вы назвали методом .iterator()
, реализация которого вы получаете.
При создании итератора из ArrayList
, например, я вижу (в Java 8), что реализация:
private class Itr implements Iterator<E> {
...
Этот класс является внутренним классом класса ArrayList. Другие классы Iterable
обеспечат другие реализации интерфейса Iterator
.
Iterator
- это интерфейс на Java. Он присутствует в java.util
упаковку java.util.Iterator
Когда Iterator
реализуется классом, который является подклассом интерфейса Collection
, который в свою очередь является расширение интерфейса Iterable
, мы можем получить iterator()
объект.
Так выглядит код:
ArrayList a = new ArrayList();
a.add("AA");
a.add("BB");
// Use iterator to display contents of a
Iterator iterator = a.iterator();
while(iterator.hasNext()) {
Object element = iterator.next();
...
}
Итак, мы видим, что мы не непосредственно с помощью next()
или hasNext()
методов из интерфейса, а мы используя их, получая iterator()
объект из класса который реализует интерфейс Iterator
- 1. Интерфейс с абстрактными методами
- 2. Java Collections hasnext() и next() method
- 3. Проблем с абстрактными обобщенными методами
- 4. groovy mocks с абстрактными методами
- 5. Iterator Infinite Loop - hasNext() и Next()
- 6. Метеор js курсор hasNext() и next()?
- 7. Почему java.util.Collection не определяет next(), hasNext() напрямую? .
- 8. Iterate with hasNext() и next() над асинхронно генерируемым потоком элементов
- 9. Невозможно создать абстрактный класс ... с абстрактными методами
- 10. Создайте суперкласс с абстрактными переменными и неабстрактными методами в C#
- 11. Полиморфизм в Objective-C с абстрактными методами
- 12. Java: реализация итератора для созданного пользователем класса HashSet. Семантика next() и hasNext()?
- 13. Интерфейс и метод итератора
- 14. метод next() итератора
- 15. Бесконечный цикл while с итератором hasNext() и next()
- 16. Интерфейс с необязательными методами
- 17. Где реализация интерфейса итератора в Java 5 и выше?
- 18. Что не так с абстрактными методами bodyless в абстрактном классе?
- 19. Разница между next() и hasNext() в коллекциях java
- 20. Как объединить DebuggerHidden с методами блока итератора?
- 21. Как создать интерфейс с абстрактными методами, которые ссылаются на self-type в java
- 22. Реализация Java итератора и Iterable интерфейс над Object [] массив
- 23. PHP, интерфейс итератора
- 24. Java - Итерируемый с собственными hasNext() и next(): как это сделать правильно?
- 25. Kohana 3.2 - библиотека phpBB - работа с абстрактными методами
- 26. Интерфейс итератора обработки исключений
- 27. Определить абстрактный класс с абстрактными методами в стиле дизайна шаблона
- 28. Netbeans Intellisense Интерфейс итератора PHP
- 29. Интерфейс с методами по умолчанию PHP
- 30. .next() after for ... .zip(): Предотвращение перемещения итератора.
Посмотрите на него. В состав JDK входят источники. – Fildor
Итераторы часто реализуются как частные классы. Например, в 'ArrayList' это' private class Itr реализует Iterator {...} ', а метод' iterator() 'просто возвращает новый экземпляр' Itr'. –
Да, 'iterator' является интерфейсом и, как таковой, он не реализует методы. Методы предоставляются конкретными классами, реализующими интерфейс (например, ArrayList, который имеет частный класс Iterator). См. Этот код для примера: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/java/util/ArrayList.java#ArrayList.Itr ' – jpw