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 ,但不能同时使用两者中的值。 |