SplayTreeSet<E> 构造函数

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

使用给定的比较函数创建一个新的 SplayTreeSet 集合。

如果省略了 compare 函数,则默认为 Comparable.compare,且元素必须是可比较的。

提供的 compare 函数可能不适用于所有对象。它甚至可能不适用于所有 E 实例。

对于向集合中添加元素的操作,用户应避免传递不适用于比较函数的对象。

containsremovelookupremoveAllretainAll 方法都接受任何对象,可以使用 isValidKey 测试在将对象传递给 compare 函数之前过滤这些对象。

如果提供了 isValidKey,则上述方法中只使用 compare 方法比较满足 isValidKey(other) 的值。如果 isValidKey 函数对一个对象返回 false,则假设该对象不在集合中。

如果省略,则 isValidKey 函数默认检查类型参数:other is E

实现

SplayTreeSet(
    [int Function(E key1, E key2)? compare,
    bool Function(dynamic potentialKey)? isValidKey])
    : _compare = compare ?? _defaultCompare<E>(),
      _validKey = isValidKey ?? ((dynamic v) => v is E);