是否值得在Java Script中创建LinkedList

Dim*_*imi 8 javascript arrays performance memory-management linked-list

我目前正在开发一个项目,要求我遍历一个值列表,并在列表中已有的每个值之间添加一个新值.这将在每次迭代时发生,因此列表将呈指数级增长.我决定将列表实现为链接列表是个好主意.现在,JS没有默认的Linked List数据结构,创建一个没有问题.

但我的问题是,从头开始创建一个简单的链接列表是否值得,或者只是创建一个数组并使用splice()插入每个元素会更好吗?事实上,由于开销会不会降低效率?

Esa*_*ija 8

使用链表,事实上,由于规范的复杂性和体面的JIT,大多数在用户javascript中完成的自定义实现都会击败内置实现.例如,请参阅https://github.com/petkaantonov/deque

乔治所说的每一点都是100%错误的,除非你在10年前使用时间机器.


至于实现,不要创建包含值的外部链表,但要使值自然地链接列表节点.否则你将使用太多的内存.

  • @Dimi我的意思是根本不要创建一个外部的"链表数据结构".只需让您的值自然具有`.next`属性(如果需要,还可以使用`.prev`).如果您的值是单独链接的,那么您将使用与使用数组一样多的内存,因此可以节省大量成本. (2认同)

geo*_*rge -2

JavaScript 是一种解释性语言。如果你想实现一个链表,那么你会循环很多次!口译员的翻译速度会非常慢。解释器提供的内置函数经过解释器优化和编译,因此运行速度更快。我会选择对数组进行切片,然后再次连接所有内容,它应该比实现您自己的数据结构更快。

javascript 也是按值传递而不是按指针/引用传递,那么你将如何实现链表呢?

  • 这不是真的。JS 通过引用传递大部分内容。 (2认同)