Mercurial > hg > semantic-sia
view src/org/qmul/eecs/c4dm/sia/model/SiatecX.java @ 94:fedf516f6a78 tip
test file
author | stevenh |
---|---|
date | Mon, 29 Dec 2014 15:16:22 +0000 |
parents | bddecf79dd3b |
children |
line wrap: on
line source
package org.qmul.eecs.c4dm.sia.model; import java.util.ArrayList; import java.util.Iterator; public class SiatecX implements Comparable { private ArrayList<NDimensionalObject> q; private int i; /** * @return */ public ArrayList<NDimensionalObject> getQ() { return q; } /** * @param q */ public void setQ(ArrayList<NDimensionalObject> q) { this.q = q; } /** * @return */ public int getI() { return i; } /** * @param i */ public void setI(int i) { this.i = i; } @Override public int compareTo(Object o2) { SiatecX siatecX2 = (SiatecX)o2; int compareQResult = compareToIgnoreI(siatecX2); if (compareQResult != 0) { return compareQResult; } // q1 and q2 are exactly equal, so compare i1 and i2 int i1 = this.getI(); int i2 = siatecX2.getI(); if (i1 < i2) { return -1; } else if (i1 > i2) { return 1; } // i1 and i2 are equal too, so return 0 return 0; } public int compareToIgnoreI(SiatecX siatecX2) { ArrayList<NDimensionalObject> q1 = this.getQ(); ArrayList<NDimensionalObject> q2 = siatecX2.getQ(); int q1Size = q1.size(); int q2Size = q2.size(); // Check whether q1 < q2 // First check for differing vector lengths if (q1Size < q2Size) { return -1; } else if (q1Size > q2Size) { return 1; } // q1 and q2 are of equal length, so compare contents of both Iterator<NDimensionalObject> q2Iter = q2.iterator(); for (NDimensionalObject nDimObj1: q1) { NDimensionalObject nDimObj2 = q2Iter.next(); int compareResult = nDimObj1.compareTo(nDimObj2); if (compareResult != 0) { return compareResult; } } return 0; } }