changes as per review
This commit is contained in:
parent
f2db58ec40
commit
023f497842
|
@ -26,18 +26,17 @@ import java.util.stream.Stream;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A ExtendedIterator is an Iterator wrapping around a plain
|
* Extends Iterator functionality to include operations commonly found on streams (e.g. filtering, concatenating, mapping).
|
||||||
* (or presented as plain) Iterator. The wrapping allows the usual
|
* It also provides convenience methods for common operations.
|
||||||
* operations found on streams (filtering, concatenating, mapping) to be done on an Iterator derived
|
|
||||||
* from some other source. It also provides convenience methods for common operations.
|
|
||||||
* @param <T> The type of object returned from the iterator.
|
* @param <T> The type of object returned from the iterator.
|
||||||
|
* @since 4.5.0-M3
|
||||||
*/
|
*/
|
||||||
public final class ExtendedIterator<T> implements Iterator<T> {
|
public final class ExtendedIterator<T> implements Iterator<T> {
|
||||||
/**
|
/**
|
||||||
* Set to <code>true</code> if this wrapping doesn't permit the use of
|
* Set to <code>true</code> if this wrapping doesn't permit the use of
|
||||||
* {@link #remove()}, otherwise removal is delegated to the base iterator.
|
* {@link #remove()}, otherwise removal is delegated to the base iterator.
|
||||||
*/
|
*/
|
||||||
private final boolean removeDenied;
|
private final boolean throwOnRemove;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an ExtendedIterator wrapped round <code>it</code>,
|
* Creates an ExtendedIterator wrapped round <code>it</code>,
|
||||||
|
@ -109,11 +108,11 @@ public final class ExtendedIterator<T> implements Iterator<T> {
|
||||||
/**
|
/**
|
||||||
* Initialise this wrapping with the given base iterator and remove-control.
|
* Initialise this wrapping with the given base iterator and remove-control.
|
||||||
* @param base the base iterator that this iterator wraps
|
* @param base the base iterator that this iterator wraps
|
||||||
* @param removeDenied true if .remove() must throw an exception
|
* @param throwOnRemove true if .remove() must throw an exception
|
||||||
*/
|
*/
|
||||||
private ExtendedIterator(final Iterator<? extends T> base, final boolean removeDenied) {
|
private ExtendedIterator(final Iterator<? extends T> base, final boolean throwOnRemove) {
|
||||||
this.base = base;
|
this.base = base;
|
||||||
this.removeDenied = removeDenied;
|
this.throwOnRemove = throwOnRemove;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -133,7 +132,7 @@ public final class ExtendedIterator<T> implements Iterator<T> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void remove() {
|
public void remove() {
|
||||||
if (removeDenied) {
|
if (throwOnRemove) {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
base.remove();
|
base.remove();
|
||||||
|
@ -160,7 +159,7 @@ public final class ExtendedIterator<T> implements Iterator<T> {
|
||||||
((IteratorChain<T>) base).addIterator(other);
|
((IteratorChain<T>) base).addIterator(other);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
return new ExtendedIterator<T>(new IteratorChain<T>(this.base, other), this.removeDenied);
|
return new ExtendedIterator<T>(new IteratorChain<T>(this.base, other), this.throwOnRemove);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -170,7 +169,7 @@ public final class ExtendedIterator<T> implements Iterator<T> {
|
||||||
* @return An iterator filtered by the predicate.
|
* @return An iterator filtered by the predicate.
|
||||||
*/
|
*/
|
||||||
public ExtendedIterator<T> filter(final Predicate<T> predicate) {
|
public ExtendedIterator<T> filter(final Predicate<T> predicate) {
|
||||||
return new ExtendedIterator<T>(new FilterIterator<>(this, predicate::test), this.removeDenied);
|
return new ExtendedIterator<T>(new FilterIterator<>(this, predicate::test), this.throwOnRemove);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue