net.sf.saxon.expr.MultiIterator Maven / Gradle / Ivy
package net.sf.saxon.expr;
import java.util.Iterator;
/**
* An iterator that combines the results of a sequence of iterators
*/
public class MultiIterator implements Iterator {
private Iterator[] array;
private int current;
/**
* Create an iterator that concatenates a number of supplied iterators
* @param array the iterators to be concatenated
*/
public MultiIterator(Iterator[] array) {
this.array = array;
current = 0;
}
/**
* Returns true if the iteration has more elements. (In other
* words, returns true if next would return an element
* rather than throwing an exception.)
*
* @return true if the iterator has more elements.
*/
public boolean hasNext() {
while (true) {
if (current >= array.length) {
return false;
}
if (array[current].hasNext()) {
return true;
}
current++;
}
}
/**
* Returns the next element in the iteration.
*
* @return the next element in the iteration.
* @exception java.util.NoSuchElementException iteration has no more elements.
*/
public Object next() {
return array[current].next();
}
/**
*
* Removes from the underlying collection the last element returned by the
* iterator (optional operation). This method can be called only once per
* call to next. The behavior of an iterator is unspecified if
* the underlying collection is modified while the iteration is in
* progress in any way other than by calling this method.
*
* @exception UnsupportedOperationException if the remove
* operation is not supported by this Iterator.
* @exception IllegalStateException if the next method has not
* yet been called, or the remove method has already
* been called after the last call to the next
* method.
*/
public void remove() {
throw new UnsupportedOperationException();
}
}
//
// The contents of this file are subject to the Mozilla Public License Version 1.0 (the "License");
// you may not use this file except in compliance with the License. You may obtain a copy of the
// License at http://www.mozilla.org/MPL/
//
// Software distributed under the License is distributed on an "AS IS" basis,
// WITHOUT WARRANTY OF ANY KIND, either express or implied.
// See the License for the specific language governing rights and limitations under the License.
//
// The Original Code is: all this file.
//
// The Initial Developer of the Original Code is Michael H. Kay.
//
// Contributor(s): Michael Kay
//
© 2015 - 2025 Weber Informatics LLC | Privacy Policy