insertAll method

void insertAll(
  1. Iterable<Interval<T>> intervals
)

Inserts multiple intervals. Optimized for sorted intervals.

Implementation

void insertAll(Iterable<Interval<T>> intervals) {
  final list = intervals.toList();

  // Verify/ensure list is sorted by start time
  bool isSorted = true;
  for (int i = 1; i < list.length; i++) {
    if (list[i].start.compareTo(list[i - 1].start) < 0) {
      isSorted = false;
      break;
    }
  }
  if (!isSorted) {
    list.sort((a, b) => a.start.compareTo(b.start));
  }

  if (root == null) {
    root = _buildBalanced(list, 0, list.length - 1);
  } else {
    // If tree is already populated, fallback to iterative insertion
    for (final interval in list) {
      insert(interval);
    }
  }
}