this.elements.addAll(l);
}
+ public NTuple(NTuple<T> tuple) {
+ this(tuple.toList());
+ }
+
+ public List<T> toList() {
+ return elements;
+ }
+
public NTuple() {
this.elements = new ArrayList<T>();
}
if (o == null || o.getClass() != this.getClass()) {
return false;
}
- return (((NTuple) o).elements).equals(elements);
+ return (((NTuple<T>) o).elements).equals(elements);
}
public int hashCode() {
return elements;
}
+ public boolean startsWith(T prefix) {
+ return get(0).equals(prefix);
+ }
+
+ public boolean startsWith(NTuple<T> prefix) {
+
+ if (prefix.size() > size()) {
+ return false;
+ }
+
+ for (int i = 0; i < prefix.size(); i++) {
+ if (!prefix.get(i).equals(get(i))) {
+ return false;
+ }
+ }
+ return true;
+
+ }
+
+ public NTuple<T> subList(int startIdx, int endIdx) {
+
+ NTuple<T> subList = new NTuple<T>();
+
+ for (int i = startIdx; i < endIdx; i++) {
+ subList.add(elements.get(i));
+ }
+
+ return subList;
+
+ }
+
+ public T getLastElement() {
+ return elements.get(elements.size() - 1);
+ }
+
+ public NTuple<T> clone() {
+ NTuple<T> clone = new NTuple<T>();
+ clone.addAll(this);
+ return clone;
+ }
+
}