В учебных целях нужно было самостоятельно реализовать связные списки и сделать так, чтобы был возможен обход через foreach. Как я понял, нужно в коллекции реализовать Iterable и создать класс реализующий Iterator. Вопрос в том, что именно делать в методе интерфейса Iterable
public void forEach(Consumer action)
и методе интерфейса Iterator
public void forEachRemaining(Consumer<? super E> action) throws NullPointerException
Раз специалисты по Java не отвечают, и @Barmaley пока не вернулся, попробую написать я.
public class MyLinkedList<T> implements Iterable<T> {
// имплементация вашего класса
public Iterator<T> iterator() {
return new MyLinkedListIterator();
}
private class MyLinkedListIterator implements Iterator<T> {
private MyListNode curr;
public MyLinkedListIterator() {
this.curr = MyLinkedList.this.head; // голова списка
}
public boolean hasNext() {
return this.curr != null;
}
public T next() {
if (!this.hasNext()) {
throw new NoSuchElementException();
}
T value = curr.value; // значение в текущем узле
curr = curr.next; // следующий узел
return value;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
}
Больше ничего делать не надо, это компилируется. Теперь можно писать:
MyLinkedList<Integer> l = new MyLinkedList<>();
for (Integer v : l) {
System.out.println(v);
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я пытаюсь добавить в архив папку вот так (в соответствии с документацией):
Хочу печатать чеки из термо-принтера VKP80II с Java через USBДолго насиловал гугл, на русском ничего не нашел
Почему то после строки где мы делаем выполнение, ничего с базы не вытаскивается, а сразу переходит в блок finallyВсе данные есть и имена прописаны...