scala - 在 Scala 中将元素附加到类似列表的集合中最有效的结构是什么?
问题描述
我必须将元素附加到我的收藏中。哪种结构更可取?附加List
成本 O(n),那么ListBuffer
, ArrayBuffer
, Set
,Map
和其他结构呢?
解决方案
ListBuffer
根据文档:
它提供恒定的时间前置和附加。
但它是可变结构,所以要小心使用——最好在非常有限的范围内(例如函数或方法)。
ArrayBuffer
根据文档:
前置和删除在缓冲区大小中是线性的。
因为这种结构建立在动态数组之上,因此有时需要内部数组副本来重新创建,这在 JVM 中几乎是恒定的,但仍然不是完全恒定的时间。有关更多详细信息,请参阅System.arraycopy
文档。也是可变结构。
Set
, Map
- 根本不是你所说List
的 -like。Set
- 无序(列表是有序的)结构,仅包含唯一元素。Map[K, V]
- 顾名思义,存储K
类型键到V
类型值之间的映射。
所以作为结论:如果您需要append
元素,我建议您使用ListBuffer
,但由于这是可变结构限制范围,只要您需要将其传递到某个地方,它的使用广告 - 将其转换为List
.
推荐阅读
- git - 如何在更改缩进时保留行的源提交引用
- python - 如何返回字符串中所有大写字母的索引列表?
- react-native - 行动。
工作一次而不是之后 - python - 如何在python中设计一个可扩展的查询字符串排序方法?
- python - 第一行输入获取不到
- java - 代号一个日历视图无法更改当前日期的文本
- javascript - 任何人都可以帮我解决这个 javascript console.log 问题吗?
- python - 枚举数据加载器时出现 KeyError - 为什么?
- windows - 查找容器 id 并停止 docker 容器的 bat 脚本语法是什么
- c++ - 重载 [] 和 = 运算符以在 C++ 中接受我的模板类的值