delete method

void delete(
  1. K key
)

Implementation

void delete(K key) {
  if (!_keyToIndex.containsKey(key)) return;

  final indexToDelete = _keyToIndex[key]!;
  final lastIndex = _values.length - 1;

  if (indexToDelete != lastIndex) {
    // Swap with last element
    _values[indexToDelete] = _values[lastIndex];

    // Update the map for the swapped element
    final swappedKey = _keyToIndex.entries
        .firstWhere((entry) => entry.value == lastIndex)
        .key;
    _keyToIndex[swappedKey] = indexToDelete;
  }

  // Remove the last element and the key
  _values.removeLast();
  _keyToIndex.remove(key);
}