为什么将不可变列表实现为链表?

时间:2015-02-15 20:40:49

标签: f#

根据F#的list documentation

  • F#中的列表是一个有序的,不可变的系列相同类型的元素

  • F#中的列表实现为单链表

为什么不在内存中连续实现它,因为它是不可变的,因此具有固定的大小?为什么要使用F#list而不是F#array

1 个答案:

答案 0 :(得分:3)

它们用于不同的目的,例如:

您在F#中使用数组来存储需要以相对较低的开销随机访问的大量数据。

当您需要在递归函数的迭代上累积某些内容时,F#中的List非常有用。阵列在这里不能很好地发挥,因为它们具有固定的大小。

使用list,您可以在O(M)时间内将ListM的所有元素(大小M)添加到ListN(大小N)。同样,您可以在O(1)时间内将单个元素添加到任何列表中。