/*
* Created on Aug 10, 2006
*/
package org.seqcode.gsebricks.verbs;
import java.util.*;
/**
* @author tdanford
*/
public class Tupler<X> implements Mapper<Iterator<X>,Iterator<Vector<X>>> {
private int length;
private LinkedList<X> current;
public Tupler(int l) {
length = l;
current = new LinkedList<X>();
}
/* (non-Javadoc)
* @see org.seqcode.gsebricks.verbs.Distiller#execute(null)
*/
public Iterator<Vector<X>> execute(Iterator<X> a) {
current.clear();
LinkedList<Vector<X>> tuples = new LinkedList<Vector<X>>();
while(a.hasNext()) {
X val = a.next();
current.addLast(val);
if(current.size() > length) {
current.removeFirst();
tuples.add(new Vector<X>(current));
}
}
return tuples.iterator();
}
}