# retainAll method

1. @override

void retainAll(

1. Iterable<Object?> elements

)
override

Removes all elements of this set that are not elements in `elements`.

Checks for each element of `elements` whether there is an element in this set that is equal to it (according to `this.contains`), and if so, the equal element in this set is retained, and elements that are not equal to any element in `elements` are removed.

    final characters = <String>{'A', 'B', 'C'};
    characters.retainAll({'A', 'B', 'X'});
    print(characters); // {A, B}

## Implementation

    @override
    void retainAll(Iterable<Object?> elements) {
      final elementsToRetain = HashSet<Object?>();
      elementsToRetain.addAll(elements);

      final elementsToRemove = <E>[];
      for (final element in this) {
        if (!elementsToRetain.contains(element)) {
          elementsToRemove.add(element);
        }
      }
      for (final element in elementsToRemove) {
        remove(element);
      }
    }