SuperAPI AI 工具集

metautil-data-structures

数据与分析

查看项目

更新于 10-16 06:46

技能介绍

用途:在 Node.js 中从 metautil 包根导入并使用其提供的抽象数据类型(ADT),当需要严格的 FIFO、LIFO、持久化或字段模式约束时,优先使用这些结构而非临时用 Array/Object 实现。

主要能力与选型:Queue 适合 FIFO 作业、BFS、滑动失败窗口;Stack 适合 LIFO 撤销、嵌套层与括号匹配;Deque 或 CircularBuffer 两端 O(1) 且可设上限窗口;List 支持索引与中段编辑/移动/分组;ConsList 用于不可变历史、分支与共享;Struct 用于带类型的封存/冻结记录;Trie 用于前缀补全与字符串键;UnrolledList 仅用于极高吞吐的 enqueue/dequeue。环形缓冲区随机访问用 CircularBuffer.at(Deque 没有)。

使用方式:以 CommonJS 引入,例如 const metautil = require('metautil'); 再解构所需类。可通过 fromArray/toArray 在结构间转换,Deque、Queue、Stack 是 CircularBuffer 的薄外观,共享同一环形存储。Struct 的模式由默认字面量推断:undefined 表示未知模式可接受任意值,null 表示引用模式,[] 与 {} 分别表示数组与普通对象模式,基本类型按 typeof 判断;不可变用 Object.freeze,可变用 Object.seal。ConsList 支持 prepend(O(1))与结构共享,empty 是单例。

适用场景:队列任务、撤销栈、滑动窗口、索引化序列编辑、不可变历史分支、带模式的记录、字符串前缀查询、高吞吐 FIFO。

限制:空 pop/dequeue/shift 返回 undefined;空集合无种子 reduce 抛 TypeError(ConsList/CircularBuffer 家族),List 始终需要种子;相等性、includes、member 使用严格等于(NaN 不匹配)。UnrolledList 无 peek、fromArray、iterator、includes,且 enqueue(undefined) 与空 dequeue 无法区分。Trie 默认值为 true,非字符串键软失败;insert 非字符串抛 TypeError。List 的 take/slice 在空范围或越界时返回 null,insert 会截断越界索引,delete/swap/move 越界为空操作。费用、平台等信息暂未提供。