A convenience class that lets you iterator over a non-sorted collection
or iterator in a sorted manner. git-svn-id: https://samskivert.googlecode.com/svn/trunk@1358 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -0,0 +1,78 @@
|
|||||||
|
//
|
||||||
|
// $Id: SortedIterator.java,v 1.1 2003/12/17 21:58:06 ray Exp $
|
||||||
|
|
||||||
|
package com.samskivert.util;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An iterator that returns the elements from another iterator into
|
||||||
|
* some sorted order.
|
||||||
|
*/
|
||||||
|
public class SortedIterator implements Iterator
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Construct a sorted iterator that iterates through the specified
|
||||||
|
* elements in natural order.
|
||||||
|
*/
|
||||||
|
public SortedIterator (Iterator itr)
|
||||||
|
{
|
||||||
|
this(itr, Comparators.COMPARABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a sorted iterator that iterates through the specified
|
||||||
|
* elements in the order according to the specified comparator.
|
||||||
|
*/
|
||||||
|
public SortedIterator (Iterator itr, Comparator comparator)
|
||||||
|
{
|
||||||
|
SortableArrayList list = new SortableArrayList();
|
||||||
|
while (itr.hasNext()) {
|
||||||
|
list.insertSorted(itr.next(), comparator);
|
||||||
|
}
|
||||||
|
_itr = list.iterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a sorted iterator that iterates through the specified
|
||||||
|
* collection in natural order.
|
||||||
|
*/
|
||||||
|
public SortedIterator (Collection c)
|
||||||
|
{
|
||||||
|
this(c.iterator());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a sorted iterator that iterates through the specified
|
||||||
|
* collection in the order according to the specified comparator.
|
||||||
|
*/
|
||||||
|
public SortedIterator (Collection c, Comparator comparator)
|
||||||
|
{
|
||||||
|
this(c.iterator(), comparator);
|
||||||
|
}
|
||||||
|
|
||||||
|
// documentation inherited from interface Iterator
|
||||||
|
public boolean hasNext ()
|
||||||
|
{
|
||||||
|
return _itr.hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
// documentation inherited from interface Iterator
|
||||||
|
public Object next ()
|
||||||
|
{
|
||||||
|
return _itr.next();
|
||||||
|
}
|
||||||
|
|
||||||
|
// documentation inherited from interface Iterator
|
||||||
|
public void remove ()
|
||||||
|
{
|
||||||
|
// sadly, we cannot
|
||||||
|
throw new UnsupportedOperationException(
|
||||||
|
"Cannot remove from a SortedIterator");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The iterator we are a wrapper around. */
|
||||||
|
protected Iterator _itr;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user