PHP - set(集)函数


Set 是不同值的集合。它使用与 Ds Map 相同的哈希表。在此实现中不考虑 mapped 值。该集合接受任何类型的值,包括 objects

set 支持用方括号表示的数组语法。插入顺序保持不变。当内存达到一定大小时,它会自动释放预留内存。add()remove() contains() 都在 O(1) 中执行。

PHP 的 set 数据结构不支持 push()pop()insert()shift() 或 unshift()

优势

  • 值可以是任何类型,包括对象。
  • 支持数组语法(方括号)。
  • 广告订单将保留。
  • 当其大小下降到足够低时,自动释放分配的内存。
  • add()remove() contains() 都是 O(1)

弱势

  • 不支持 push()pop()insert()shift() 或 unshift()
  • get() 如果缓冲区中在访问的索引之前有已删除的值,则为 O(n),否则为 O(1)

函数列表

以下是 Set 类提供的函数列表 -

函数 描述
Ds\Set::add() set 添加值。
Ds\Set::allocate() 为所需的容量分配足够的内存。
Ds\Set::capacity() 返回当前容量。
Ds\Set::clear() 可以删除所有值。
Ds\Set::__construct() 创建新实例。
Ds\Set::contains() 确定 set 是否包含所有值。
Ds\Set::copy() 返回 set 的浅表副本。
Ds\Set::count 用于计算 set 存在的值的数量,也称为 set 实例的大小。
Ds\Set::diff() 使用不在另一个 set 中的值创建新 set
Ds\Sequence::filter() 通过使用可调用对象来确定要包含哪些值来创建新 set
Ds\Set::first() 返回 set 中的第一个值。
Ds\Set::get() 返回给定索引处的值。
Ds\Set::intersect() 通过将值与另一个 set 相交来创建新 set
Ds\Set::isEmpty() 返回 set 是否为空。
Ds\Set::join() 将所有值作为字符串连接在一起。
Ds\Set::jsonSerialize() 返回可转换为 JSON 的表示形式。
Ds\Set::last() 返回 set 的最后一个值。
Ds\Set::merge() 返回将所有给定值添加到 set 的结果。
Ds\Set::reduce() 通过使用 callback function 将 set 减少为单个值。
Ds\Set::remove() set 删除所有给定的值。
Ds\Set::reverse() 可以就地反转一组。
Ds\Set::reversed() 可以返回反向副本。
Ds\Set::slice() 返回给定范围的子 set
Ds\Set::sort() 返回已排序的副本。
Ds\Set::sorted() 返回已排序的副本。
Ds\Set::sum() 返回 set 所有值的总和。
Ds\Set::toArray() set 转换为数组。
Ds\Set::union() 使用当前实例和另一个 set 的值创建新 set
Ds\Set::xor() 使用当前实例和另一个 set 的值创建新 set ,但不能同时使用两者中的值。