I would strongly recommend you create a class to hold your list values. This allows you to enjoy the benefits of type safety, including being sure you always have exactly two integer values (rather than a unknown number of items in a list). For instance:
public class Range implements Comparable<Range> {
private final int startPosition;
private final int endPosition;
public Range(int startPosition, int endPosition) {
this.startPosition = startPosition;
this.endPosition = endPosition;
}
@Override
public int compareTo(Range o) {
return startPosition - o.startPosition;
}
@Override
public String toString() {
return String.format("[%d,%d]", startPosition, endPosition);
}
}
Because this class implements Comparable, you can sort with the normal Collections.sort method:
public static void main(String[] args) throws Exception {
List<Range> ranges = Arrays.asList(new Range(198, 200), new Range(50,
61));
System.out.println("Unsorted");
for (Range range : ranges) {
System.out.println(range);
}
Collections.sort(ranges);
System.out.println("Sorted");
for (Range range : ranges) {
System.out.println(range);
}
}
Output:
Unsorted
[198,200]
[50,61]
Sorted
[50,61]
[198,200]
[1,198,200], [2,50,61]