Пример #1
0
  public IntervalNodeOri(Markers markers) {
    intervals = new TreeMap<Marker, List<Marker>>();

    SortedSet<Integer> endpoints = new TreeSet<Integer>();

    for (Interval interval : markers) {
      endpoints.add(interval.getStart());
      endpoints.add(interval.getEnd());
    }

    if (endpoints.isEmpty()) {
      center = 0;
      return;
    }

    int median = getMedian(endpoints);
    center = median;

    Markers left = new Markers();
    Markers right = new Markers();

    for (Marker interval : markers) {
      if (interval.getEnd() < median) left.add(interval);
      else if (interval.getStart() > median) right.add(interval);
      else {
        List<Marker> posting = intervals.get(interval);
        if (posting == null) {
          posting = new ArrayList<Marker>();
          intervals.put(interval, posting);
        }
        posting.add(interval);
      }
    }

    if (left.size() > 0) leftNode = new IntervalNodeOri(left);
    if (right.size() > 0) rightNode = new IntervalNodeOri(right);
  }