package com.limegroup.gnutella.util;
import java.util.Iterator;
/**
* An iterator that iterates over two other iterators, in order.
*/
public class DualIterator implements Iterator {
/**
* The primary iterator.
*/
private final Iterator i1;
/**
* The secondary iterator.
*/
private final Iterator i2;
/**
* Whether or not we have reached the secondary iterator.
*/
private boolean onOne;
/**
* Constructs a new DualIterator backed by two iterators.
*/
public DualIterator(Iterator a, Iterator b) {
i1 = a; i2 = b;
onOne = true;
}
/**
* Determines if there are any elements left in either iterator.
*/
public boolean hasNext() {
return i1.hasNext() || i2.hasNext();
}
/**
* Retrieves the next element from the current backing iterator.
*/
public Object next() {
if(i1.hasNext())
return i1.next();
else {
onOne = false;
return i2.next();
}
}
/**
* Removes the element from the current backing iterator.
*/
public void remove() {
if(onOne)
i1.remove();
else
i2.remove();
}
}