【发布时间】:2011-04-07 17:38:45
【问题描述】:
我正在编写一个包含一些函数式方法的类。首先,我使用 List 作为参数和返回类型来编写它们。然后我想“嘿,你也可以使用更通用的类型!”所以我用 Seq 替换了 Lists,希望有一天我可以通过给它们提供除列表之外的其他东西来让我的东西更快。
那么,我应该为哪种通用堆栈式数据结构编写方法和算法?有我可以坚持的一般模式吗?这一切都是因为这些方法将来可能需要进行优化,以防它们形成瓶颈。
更新
我会尽量准确一点: 假设您知道您正在使用哪些操作,例如反转、.tail、直接元素访问或推导式。我可以选择一种类型来强制提高这些操作的效率吗?
更新 2
我非常了解具体数据结构在各种任务中的性能。我不知道哪种数据结构可能会显示为某些超类型的子类。
例如,我应该使用 TraversableOnce 或 IndexedSeq 而不是 List 或 Array?它会给我带来什么吗?
附加问题
你的默认的类似列表的数据结构签名是什么?你会写吗
def a(b: List[A]): List[A]
或
def a(b: TraversableOnce[A]): TraversableOnce[A]
你能解释一下原因吗?
【问题讨论】:
-
也许我面临的问题是我知道可能有 5 个集合实现和 50 个超类型/特征。我知道我必须选择哪个实现,但不知道哪个特征。
标签: design-patterns scala