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);
17 this.elements = new ArrayList<T>();
20 public String toString() {
21 return elements.toString();
24 public T get(int index) {
25 return elements.get(index);
29 return elements.size();
32 public void add(T newElement) {
33 this.elements.add(newElement);
36 public void addAll(Collection<T> all) {
37 this.elements.addAll(all);
40 public void addAll(NTuple<T> tuple) {
41 for (int i = 0; i < tuple.size(); i++) {
42 elements.add(tuple.get(i));
46 public boolean equals(Object o) {
51 if (o == null || o.getClass() != this.getClass()) {
54 return (((NTuple) o).elements).equals(elements);
57 public int hashCode() {
58 return elements.hashCode();
61 public void removeAt(int i) {
65 public List<T> getList() {
69 public boolean startsWith(T prefix) {
70 return get(0).equals(prefix);
73 public boolean startsWith(NTuple<T> prefix) {
75 if (prefix.size() > size()) {
79 for (int i = 0; i < prefix.size(); i++) {
80 if (prefix.get(i).equals(get(i))) {