Ejemplo n.º 1
0
 /**
  * Add an IntRangeData into the table.
  *
  * <p>Overlaped item is not allowed.
  */
 public void add(IntRangeData<T> data) {
   int index = findIndexToAdd(data.getStart(), data.getEnd());
   if (index < 0) {
     throw new RuntimeException("Range overlap: " + data);
   }
   this.arrayList.add(index, data);
 }
Ejemplo n.º 2
0
 private int findIndexOfInclude(int value) {
   int start = 0;
   int end = this.arrayList.size() - 1;
   while (start <= end) {
     int mid = (start + end + 1) / 2;
     IntRangeData<T> c = this.arrayList.get(mid);
     if (value < c.getStart()) {
       end = mid - 1;
     } else if (value > c.getEnd()) {
       start = mid + 1;
     } else {
       return mid;
     }
   }
   return -1;
 }
Ejemplo n.º 3
0
 private int findIndexToAdd(int rangeStart, int rangeEnd) {
   int start = 0;
   int end = this.arrayList.size() - 1;
   int hit = 0;
   while (start <= end) {
     int mid = (start + end + 1) / 2;
     IntRangeData<T> c = this.arrayList.get(mid);
     if (rangeEnd < c.getStart()) {
       end = mid - 1;
       hit = mid;
     } else if (rangeStart > c.getEnd()) {
       start = mid + 1;
       hit = start;
     } else {
       return -1;
     }
   }
   return hit;
 }
Ejemplo n.º 4
0
 /** Find a data value for range which includes argument value. */
 public T find(int value) {
   IntRangeData<T> data = findRangeData(value);
   return data == null ? null : data.getData();
 }