【发布时间】:2012-01-07 18:06:40
【问题描述】:
对于我正在进行的项目,我需要跟踪多达数千个对象。我选择的集合需要支持随机元素的插入、选择和删除。我的算法多次执行这些操作中的每一个,所以我想要一个可以在恒定时间内完成所有这些操作的集合。
有这样的收藏吗?如果没有,与现有收藏有哪些权衡?我正在使用 Scala 2.9.1。
编辑:“随机”是指数学上/概率上的随机,即我想使用 Random 或其他适当的生成器从集合中随机选择元素。
【问题讨论】:
-
您的收藏应该能够包含重复项吗?元素的顺序是否相关?
-
@PeterSchmitz,我不会尝试存储重复项,元素的顺序并不重要,因为我只想随机访问它们。
-
这是performance-wise comparison of scala collections。还要根据您喜欢的编程风格(功能性?“纯”OOP?)以及对您的集合的访问需要有多并行(您是否只有一个线程访问它?)来选择您的选择。
-
请在您找到可以在恒定时间内完成所有上述操作的集合后告诉我们。
-
您能否阐明您需要的操作——例如什么是随机元素的插入?如果您在随机索引处添加元素或从随机索引中提取元素,而不是同时要求两者,这还不够吗?因为这样您就可以选择一种支持高效附加或前置以及高效随机访问和删除的数据结构,反之亦然。您需要不可变的还是可变的数据结构?