1 |
stehr |
230 |
package proteinstructure; |
2 |
|
|
|
3 |
|
|
import java.util.TreeSet; |
4 |
|
|
import java.util.Vector; |
5 |
|
|
|
6 |
|
|
public class NodeSet extends TreeSet<Integer> { |
7 |
|
|
|
8 |
|
|
private static final long serialVersionUID = 1L; |
9 |
|
|
|
10 |
|
|
/** |
11 |
|
|
* Returns the set as a vector of intervals of consecutive elements. |
12 |
|
|
* @return |
13 |
|
|
*/ |
14 |
|
|
public Vector<Interval> getIntervals() { |
15 |
|
|
Vector<Interval> intervals = new Vector<Interval>(); |
16 |
|
|
if(this.size() == 0) return intervals; |
17 |
|
|
// assuming that this set is sorted, otherwise sort it |
18 |
|
|
int last = this.first(); // previous element |
19 |
|
|
int start = last; // start if current interval |
20 |
|
|
for(int i:this) { |
21 |
|
|
if(i > last+1) { |
22 |
|
|
// output interval and start new one |
23 |
|
|
intervals.add(new Interval(start, last)); |
24 |
|
|
start = i; |
25 |
|
|
last = i; |
26 |
|
|
} else |
27 |
|
|
if(i == last) { |
28 |
|
|
// can that even happen? |
29 |
|
|
} else |
30 |
|
|
if(i == last+1) { |
31 |
|
|
last = i; |
32 |
|
|
} |
33 |
|
|
} |
34 |
|
|
// output last interval |
35 |
|
|
intervals.add(new Interval(start, last)); |
36 |
|
|
return intervals; |
37 |
|
|
} |
38 |
|
|
|
39 |
|
|
} |