Scala中的递归集合,如List
其目的是使用Scala集合,其中大小不需要迭代或递归计算Scala中的递归集合,如List,scala,collections,recursive-datastructures,Scala,Collections,Recursive Datastructures,其目的是使用Scala集合,其中大小不需要迭代或递归计算 例如,列表被证明是递归构造,例如,为了获得需要迭代的大小;即对列表中的元素数进行ON操作 因此,询问此操作的集合是O1? 非常感谢 对于不可变集合,Vector具有恒定大小的操作 可变数组具有常量大小操作 对于可变集合,ListBuffer和ArrayBuffer都有固定大小的操作。 根据代码快速查看,主要不可变集合的方法大小成本: Seq: LinearSeq: List - O(N) Stream - O(N)*
例如,列表被证明是递归构造,例如,为了获得需要迭代的大小;即对列表中的元素数进行ON操作
因此,询问此操作的集合是O1? 非常感谢 对于不可变集合,Vector具有恒定大小的操作 可变数组具有常量大小操作 对于可变集合,ListBuffer和ArrayBuffer都有固定大小的操作。 根据代码快速查看,主要不可变集合的方法大小成本:Seq:
LinearSeq:
List - O(N)
Stream - O(N)*
Queue - O(N) // Implemented using List
Stack - O(N)* // Implemented using List, with additional complexity
IndexedSeq:
Vector - O(1)
NumericRange - O(1)
Array - O(1) // WrappedArray, ArrayOps
String - O(1) // WrappedString, StringOps
Range - O(1)
Set:
HashSet - O(1) // HashSet.HashTrieSet
TreeSet - O(N) // RedBlackTree.count - recursive with stack usage
BitSet - O(Max)* // fast enough. O(1) for collections of small ints
ListSet - O(N)
Map:
HashMap - O(1) // HashMap.HashTrieMap
TreeMap - O(N) // RedBlackTree.count - recursive with stack usage
ListMap - O(N)
流动
从文件:
为了计算流的长度,必须首先完全实现它,这可能会导致对无限系列的完整计算,假设这就是流所表示的
堆栈
Stacklength复杂度比Listlength复杂度差得多:它创建N个新对象在堆栈上迭代
位集合
位集用于小整数的集合
BitSetsize的复杂性取决于最大元素,而不是元素数。是关于OMax/64的。另见
树集/树映射
我不确定TreeSet和TreeMap的复杂性,它看起来像是递归的,而不是尾部递归。请参阅。我最近找到了Daniel Spiewak的一篇演讲,他谈到了scala中的函数数据结构。这里有一个链接,也许你可以提取你需要的知识。