Я пишу тестовый класс для моей реализации c MinPriorityQueue.
Я попытался выполнить итерацию очереди двумя способами (т. Е. Вариант 1 и 2). Вариант 1 работает. Опция 2 выдает ошибку.
Опция 1 :
Iterator<Integer> it = q.iterator(); while(it.hasNext()) System.out.print(it.next() + " ");
Опция 2 :
for(Integer i : q) System.out.print(i + " ");
Вопрос: Почему вариант 2 дает мне следующую ошибку (и как я могу ее исправить)?
main. java: 17: ошибка: несовместимые типы: объект не может быть преобразован в целое для (Integer i: q)
Снимок экрана класса main
Снимок экрана класса MinPriorityQueue
Снимок экрана абстрактного класса PriorityQueue
Редактировать 1: Добавлены скриншоты классов
Ваш MinPriorityQueue имеет необработанный суперкласс:
MinPriorityQueue
... extends PriorityQueue
Таким образом, методы, унаследованные от этого класса (например, iterator()), также будут необработанными.
iterator()
Создание суперкласса не сырье:
... extends PriorityQueue<E>
Что ж, скорее всего, ваша реализация MinPriorityQueue не реализует интерфейс Iterable<?>, только в этом случае вы можете использовать его в циклах, как пытаетесь сделать в варианте 2.
Iterable<?>