/* Copyright (C) 2002 Univ. of Massachusetts Amherst, Computer Science Dept.
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 Andrew McCallum <a href="mailto:mccallum@cs.umass.edu">mccallum@cs.umass.edu</a>
*/
package cc.mallet.types;
import java.util.ArrayList;
import cc.mallet.types.Sequence;
public class ArraySequence<E> implements Sequence<E>
{
E[] data;
public ArraySequence (ArrayList<E> a)
{
data = (E[])new Object[a.size()];
for (int i = 0; i < a.size(); i++)
data[i] = a.get(i);
}
public ArraySequence (E[] a, boolean copy)
{
if (copy) {
data = (E[])new Object[a.length];
System.arraycopy (a, 0, data, 0, a.length);
} else
data = a;
}
public ArraySequence (E[] a)
{
this (a, true);
}
protected ArraySequence (Sequence<E> s, boolean copy)
{
if (s instanceof ArraySequence) {
if (copy) {
data = (E[])new Object[s.size()];
System.arraycopy (((ArraySequence)s).data, 0, data, 0, data.length);
} else
data = ((ArraySequence<E>)s).data;
} else {
data = (E[])new Object[s.size()];
for (int i = 0; i < s.size(); i++)
data[i] = s.get(i);
}
}
public E get (int index)
{
return data[index];
}
public int size ()
{
return data.length;
}
public String toString() {
String toret = "";
for (int i = 0; i < data.length; i++) {
toret += " " + data[i];
}
return toret;
}
}