【发布时间】:2014-04-13 02:37:58
【问题描述】:
我有一个算法,出于性能原因,应该使用链表。我希望不断地从列表中添加和删除元素,而且我永远不需要按索引查找特定元素。
我看到 Dart 在dart:collection 中有一个LinkedList (API docs),但这要求所有条目都为LinkedListEntry 的子类。我不控制需要放入列表的元素,也不想创建包装器。
我在核心 Dart SDK 中有哪些选择?
【问题讨论】:
-
我怀疑答案是“使用队列”,但仍然很好奇。 Queue API 文档没有关于使用成本的详细信息。
-
ListQueue文档说:“保持元素的循环缓冲区,并在填满时增长到更大的缓冲区。这保证了恒定时间的查看和删除操作,以及摊销的恒定时间添加操作。 "DoubleLinkedQueue表示“允许恒定时间添加、末端删除和查看操作。” - 由于子实现可能不同,因此队列接口没有说明任何内容。 -
谢谢@lrn。阅读 Queue 并没有将我指向 ListQueue 或 DoubleLinkedQueue。我想知道我们是否可以在文档中链接(哈哈明白吗?)这两者。
-
我一直发现 LinkedList 的实现是错误的。 Java 的 LinkedList 是正确的方式,它提供了没有进一步限制的 List 接口,而 Dart LinkedList 没有。我认为没有人会使用 LinkedList over Queue。
标签: dart