Mercurial > hg > semantic-sia
comparison src/org/qmul/eecs/c4dm/sia/model/SiatecX.java @ 25:bddecf79dd3b
new
author | stevenh |
---|---|
date | Tue, 08 Jan 2013 18:41:41 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
24:565a4fb40d0e | 25:bddecf79dd3b |
---|---|
1 package org.qmul.eecs.c4dm.sia.model; | |
2 | |
3 import java.util.ArrayList; | |
4 import java.util.Iterator; | |
5 | |
6 public class SiatecX implements Comparable { | |
7 | |
8 private ArrayList<NDimensionalObject> q; | |
9 private int i; | |
10 | |
11 /** | |
12 * @return | |
13 */ | |
14 public ArrayList<NDimensionalObject> getQ() { | |
15 return q; | |
16 } | |
17 | |
18 /** | |
19 * @param q | |
20 */ | |
21 public void setQ(ArrayList<NDimensionalObject> q) { | |
22 this.q = q; | |
23 } | |
24 | |
25 /** | |
26 * @return | |
27 */ | |
28 public int getI() { | |
29 return i; | |
30 } | |
31 | |
32 /** | |
33 * @param i | |
34 */ | |
35 public void setI(int i) { | |
36 this.i = i; | |
37 } | |
38 | |
39 @Override | |
40 public int compareTo(Object o2) { | |
41 | |
42 SiatecX siatecX2 = (SiatecX)o2; | |
43 int compareQResult = compareToIgnoreI(siatecX2); | |
44 | |
45 if (compareQResult != 0) | |
46 { | |
47 return compareQResult; | |
48 } | |
49 | |
50 // q1 and q2 are exactly equal, so compare i1 and i2 | |
51 int i1 = this.getI(); | |
52 int i2 = siatecX2.getI(); | |
53 | |
54 if (i1 < i2) | |
55 { | |
56 return -1; | |
57 } | |
58 else if (i1 > i2) | |
59 { | |
60 return 1; | |
61 } | |
62 | |
63 // i1 and i2 are equal too, so return 0 | |
64 return 0; | |
65 } | |
66 | |
67 public int compareToIgnoreI(SiatecX siatecX2) { | |
68 | |
69 ArrayList<NDimensionalObject> q1 = this.getQ(); | |
70 ArrayList<NDimensionalObject> q2 = siatecX2.getQ(); | |
71 | |
72 int q1Size = q1.size(); | |
73 int q2Size = q2.size(); | |
74 | |
75 // Check whether q1 < q2 | |
76 | |
77 // First check for differing vector lengths | |
78 if (q1Size < q2Size) | |
79 { | |
80 return -1; | |
81 } | |
82 else if (q1Size > q2Size) | |
83 { | |
84 return 1; | |
85 } | |
86 | |
87 // q1 and q2 are of equal length, so compare contents of both | |
88 Iterator<NDimensionalObject> q2Iter = q2.iterator(); | |
89 for (NDimensionalObject nDimObj1: q1) | |
90 { | |
91 NDimensionalObject nDimObj2 = q2Iter.next(); | |
92 int compareResult = nDimObj1.compareTo(nDimObj2); | |
93 if (compareResult != 0) | |
94 { | |
95 return compareResult; | |
96 } | |
97 } | |
98 | |
99 return 0; | |
100 } | |
101 | |
102 | |
103 } |