ComputeIDs<D extends Object> constructor

ComputeIDs<D extends Object>(
  1. List<D> ids, {
  2. ComputeIDCompare<D>? compare,
  3. ComputeIDHash<D>? hash,
})

Creates a sorted and deduplicated ID collection.

IDs are copied from ids, sorted using compare, and duplicates are removed according to the comparator.

Implementation

ComputeIDs(List<D> ids, {ComputeIDCompare<D>? compare, this.hash})
    : _ids = ids.toList(),
      compare =
          _Comparer.resolveCompare<D>(compare) ?? _Comparer._defaultCompare {
  final compare = this.compare;

  _ids.sort(compare);

  assert(checkIDsSorted());

  // Deduplicate (requires sorted list):
  for (var i = _ids.length - 1; i > 0; --i) {
    if (compare(_ids[i], _ids[i - 1]) == 0) {
      _ids.removeAt(i);
    }
  }
}