/* Copyright (C) 2003 University of Pennsylvania
This file is part of "MALLET" (MAchine Learning for LanguagE Toolkit).
http://www.cs.umass.edu/~mccallum/mallet
This software is provided under the terms of the Common Public License,
version 1.0, as published by http://www.opensource.org. For further
information, see the file `LICENSE' included with this distribution. */
/**
@author Fernando Pereira <a href="mailto:pereira@cis.upenn.edu">pereira@cis.upenn.edu</a>
*/
package cc.mallet.pipe.iterator;
import java.util.Iterator;
import java.util.ArrayList;
import java.util.List;
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
import cc.mallet.pipe.Pipe;
import cc.mallet.types.Alphabet;
import cc.mallet.types.Instance;
import cc.mallet.types.Label;
public class ArrayDataAndTargetIterator implements Iterator<Instance>
{
Iterator subIterator;
Iterator targetIterator;
int index;
public ArrayDataAndTargetIterator (List data, List targets)
{
this.subIterator = data.iterator ();
this.targetIterator = targets.iterator ();
this.index = 0;
}
public ArrayDataAndTargetIterator (Object[] data, Object target[])
{
this (java.util.Arrays.asList (data), java.util.Arrays.asList (target));
}
// The PipeInputIterator interface
public Instance next ()
{
URI uri = null;
try { uri = new URI ("array:" + index++); }
catch (Exception e) { e.printStackTrace(); throw new IllegalStateException(); }
return new Instance (subIterator.next(), targetIterator.next(), uri, null);
}
public boolean hasNext () { return subIterator.hasNext(); }
public void remove () { throw new IllegalStateException ("This iterator does not support remove()."); }
}