retainAll 方法

void retainAll(
  1. Iterable<Object?> elements
)
override

移除本集合中不在 elements 中的所有元素。

检查 elements 中的每个元素,是否在本集合中存在相等的元素(根据 this.contains 判断),如果存在,则保留本集合中的相等元素,并移除所有与 elements 中任何元素不相等的元素。

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

实现

void retainAll(Iterable<Object?> elements) {
  // Create a copy of the set, remove all of elements from the copy,
  // then remove all remaining elements in copy from this.
  Set<E> toRemove = toSet();
  for (Object? o in elements) {
    toRemove.remove(o);
  }
  removeAll(toRemove);
}