1 package Analysis.SSJava;
3 import java.util.ArrayList;
4 import java.util.Collection;
7 public class NTuple<T> {
9 private List<T> elements;
11 public NTuple(List<T> l) {
12 this.elements = new ArrayList<T>();
13 this.elements.addAll(l);
16 public NTuple(NTuple<T> tuple) {
20 public List<T> toList() {
25 this.elements = new ArrayList<T>();
28 public String toString() {
29 return elements.toString();
32 public T get(int index) {
33 return elements.get(index);
37 return elements.size();
40 public void add(T newElement) {
41 this.elements.add(newElement);
44 public void addAll(Collection<T> all) {
45 this.elements.addAll(all);
48 public void addAll(NTuple<T> tuple) {
49 for (int i = 0; i < tuple.size(); i++) {
50 elements.add(tuple.get(i));
54 public boolean equals(Object o) {
59 if (o == null || o.getClass() != this.getClass()) {
62 return (((NTuple<T>) o).elements).equals(elements);
65 public int hashCode() {
66 return elements.hashCode();
69 public void removeAt(int i) {
73 public List<T> getList() {
77 public boolean startsWith(T prefix) {
78 return get(0).equals(prefix);
81 public boolean startsWith(NTuple<T> prefix) {
83 if (prefix.size() > size()) {
87 for (int i = 0; i < prefix.size(); i++) {
88 if (!prefix.get(i).equals(get(i))) {
96 public NTuple<T> subList(int startIdx, int endIdx) {
98 NTuple<T> subList = new NTuple<T>();
100 for (int i = startIdx; i < endIdx; i++) {
101 subList.add(elements.get(i));
108 public T getLastElement() {
109 return elements.get(elements.size() - 1);