令我惊讶的是,Array
和List
是Elm中的两种不同类型:
Array
List
就我而言,我有一个长度为2,000,000的
List Int
,我需要大约10,000,但是我事先不知道哪一万。那将由另一个列表提供。用伪代码:x = [ 1,1,0,30,...,255,0,1 ]
y = [ 1,4,7,18,36,..., 1334823 , ... 1899876 ]
z = [ y[x[0]], y[x[1]], ... ]
我使用伪代码,因为显然这不是Elm语法(它可能是合法的JavaScript)。
可以使用
List
或Array
或同时使用这两种方法来选择这些数组吗?
最佳答案
List
是一个链表,它根据索引提供O(n)查找时间。通过索引获取元素需要遍历n
节点上的列表。核心库中没有List
的索引查找功能,但是您可以使用elm-community/list-extra软件包,该软件包提供了两个查找功能(按参数顺序变化): !!
和 getAt
。Array
允许O(log n)索引查找。可以使用 Array
完成对Array.get
的索引查找。数组表示为Relaxed Radix Balanced Trees。
两者都是不可变的(榆树中的所有值都是不可变的),因此您需要根据情况进行权衡。进行大量更改时,List
很棒,因为您只是在更新链表指针,而Array
则非常适合快速查找,但是修改性能较差,如果进行大量更改,则需要考虑这一点。 。
关于arrays - Elm 中的阵列与列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37707577/