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 }