remove method

  1. @override
bool remove(
  1. Object? value
)
override

Removes value from the set.

Returns true if value was in the set, and false if not. The method has no effect if value was not in the set.

final characters = <String>{'A', 'B', 'C'};
final didRemoveB = characters.remove('B'); // true
final didRemoveD = characters.remove('D'); // false
print(characters); // {A, C}

Implementation

@override
bool remove(Object? value) {
  if (isEmpty) return false;

  final index = _getBucketIndex(value);
  final bucket = _buckets[index];

  if (bucket != null) {
    for (int i = 0; i < bucket.length; i++) {
      if (bucket[i] == value) {
        bucket.removeAt(i);
        _size--;
        // If bucket becomes empty, set to null to save memory (optional)
        if (bucket.isEmpty) {
          _buckets[index] = null;
        }
        return true;
      }
    }
  }
  return false;
}