/** * Decorates the specified iterator such that it cannot be modified. * <p> * If the iterator is already unmodifiable it is returned directly. * * @param <E> the element type * @param iterator the iterator to decorate * @return a new unmodifiable iterator * @throws NullPointerException if the iterator is null */ public static <E> Iterator<E> unmodifiableIterator(final Iterator<? extends E> iterator) { if (iterator == null) { throw new NullPointerException("Iterator must not be null"); } if (iterator instanceof Unmodifiable) { @SuppressWarnings("unchecked") // safe to upcast final Iterator<E> tmpIterator = (Iterator<E>) iterator; return tmpIterator; } return new UnmodifiableIterator<>(iterator); }
/** * Gets an immutable version of an {@link Iterator}. The returned object * will always throw an {@link UnsupportedOperationException} for * the {@link Iterator#remove} method. * * @param <E> the element type * @param iterator the iterator to make immutable * @return an immutable version of the iterator */ public static <E> Iterator<E> unmodifiableIterator(final Iterator<E> iterator) { return UnmodifiableIterator.unmodifiableIterator(iterator); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<K> iterator() { return UnmodifiableIterator.unmodifiableIterator(parent.keySet().iterator()); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.<E> unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<E> iterator() { return UnmodifiableIterator.<E> unmodifiableIterator(decorated().iterator()); }
@Override public Iterator<E> descendingIterator() { return UnmodifiableIterator.unmodifiableIterator(decorated().descendingIterator()); }