SplayTreeSet<E>.from 构造函数

SplayTreeSet<E>.from(
  1. Iterable elements, [
  2. int compare(
    1. E key1,
    2. E key2
    )?,
  3. bool isValidKey(
    1. dynamic potentialKey
    )?
])

创建一个包含所有 elementsSplayTreeSet

该集合的工作方式就像通过 SplayTreeSet<E>(compare, isValidKey) 创建的一样。

所有 elements 应该是 E 的实例,并且是 compare 的有效参数。该 elements 可迭代本身可以有任何元素类型,因此此构造函数可用于向下转换 Set,例如:

Set<SuperType> superSet = ...;
Set<SubType> subSet =
    SplayTreeSet<SubType>.from(superSet.whereType<SubType>());

示例

final numbers = <num>[20, 30, 10];
final setFrom = SplayTreeSet<int>.from(numbers);
print(setFrom); // {10, 20, 30}

实现

factory SplayTreeSet.from(Iterable elements,
    [int Function(E key1, E key2)? compare,
    bool Function(dynamic potentialKey)? isValidKey]) {
  if (elements is Iterable<E>) {
    return SplayTreeSet<E>.of(elements, compare, isValidKey);
  }
  SplayTreeSet<E> result = SplayTreeSet<E>(compare, isValidKey);
  for (var element in elements) {
    result.add(element as dynamic);
  }
  return result;
}