list - 什么是 DList?

标签 list scala data-structures append scalaz

我试着用谷歌搜索这个,但我得到的只是关于小名人的故事。鉴于缺乏文档,什么是 DList ?

最佳答案

这是一个差异列表,沿着 "Difference List as functions"

scala> val (l1, l2, l3) = (List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))
l1: List[Int] = List(1, 2, 3)
l2: List[Int] = List(4, 5, 6)
l3: List[Int] = List(7, 8, 9)

高效的前置:
scala> l1 ::: l2 ::: l3
res8: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

append 效率低下。这将创建一个中间列表 (l1++ l2),然后 ((l1++ l2)++ l3)
scala> l1 ++ l2 ++ l3  // inefficient
res9: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
DList存储追加,只需要创建一个完整的列表,有效地调用:
scala> List(l1, l2, l3) reduceRight ( _ ::: _) 
res10: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

关于list - 什么是 DList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3352418/

相关文章:

scala - 单元素列表具有相同的头部但不相等?

java - Java 中的数组或列表。哪个更快?

python - 如何使用 python 删除包含特定模式的列表的元素?

scala - 使用值与参数顺序不匹配的无形 HList 调用 Scala Function2

Scala pipelines - 用于构建 DAG 工作流程的 DSL

javascript - 检查多组对是否覆盖给定的一组对

javascript - 具有多个 key 对的 JSON 的适当数据结构

python - Pandas:将行附加到列中具有多索引的DataFrame

list - data.frame 行到列表

java - 列表转队列如何实现FIFO