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(compare) {
  _ids.sort(compare);

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