У меня есть интерфейс ThrowingIterator, который соответствует общему контракту Iterator, за исключением того, что методы hasNext() и next() могут создавать исключения:
Код: Выделить всё
public interface ThrowingIterator {
boolean hasNext() throws E;
T next() throws E;
default void remove() throws E { /* throw unsupported */ }
// forEachRemaining same as Iterator
}
Я могу изменить тип возвращаемого значения итератора, используя функцию адаптации, аналогично тому, как Stream имеет карту (Function
Подробнее здесь:
https://stackoverflow.com/questions/787 ... g-iterator