Home > @esengine/ecs-framework-monorepo > SparseSet
SparseSet class
稀疏集合实现
提供O(1)的插入、删除、查找操作,同时保持数据的紧凑存储。 使用密集数组存储实际数据,稀疏映射提供快速访问
T 存储的数据类型
Signature:
typescript
export declare class SparseSet<T>
Example
typescript
const sparseSet = new SparseSet<Entity>();
sparseSet.add(entity1);
sparseSet.add(entity2);
if (sparseSet.has(entity1)) {
sparseSet.remove(entity1);
}
sparseSet.forEach((entity, index) => {
console.log(`Entity at index ${index}: ${entity.name}`);
});
Properties
Property | Modifiers | Type | Description |
---|---|---|---|
| boolean | 检查集合是否为空 | |
| number | 获取集合大小 |
Methods
Method | Modifiers | Description |
---|---|---|
添加元素到集合 | ||
清空集合 | ||
检查是否所有元素都满足条件 | ||
过滤集合中的元素 | ||
查找第一个满足条件的元素 | ||
遍历集合中的所有元素 保证遍历顺序与添加顺序一致(除非中间有删除操作)。 遍历性能优秀,因为数据在内存中连续存储。 | ||
根据索引获取元素 | ||
获取密集数组的只读副本 返回数组的浅拷贝,确保外部无法直接修改内部数据。 | ||
获取密集数组的直接引用(内部使用) 警告:直接修改返回的数组会破坏数据结构的完整性。 仅在性能关键场景下使用,并确保不会修改数组内容。 | ||
获取元素在密集数组中的索引 | ||
获取内存使用统计信息 | ||
检查元素是否存在于集合中 | ||
映射集合中的所有元素 | ||
从集合中移除元素 使用swap-and-pop技术保持数组紧凑性: 1. 将要删除的元素与最后一个元素交换 2. 删除最后一个元素 3. 更新映射表 | ||
检查是否存在满足条件的元素 | ||
转换为数组 | ||
转换为Set | ||
验证数据结构的完整性 调试用方法,检查内部数据结构是否一致。 |