scala - mutable.HashSet.keys 的时间复杂度是多少
问题描述
假设我正在实现以下类:
class Foo{
val set = new mutable.HashSet[Int, Int]()
def add(key: Int, value: Int) = {
// do-stuff
set.put(key, value)
}
def iterate() = {
//iterate through all keys
}
}
我的问题是关于一个有效的实现,iterate
我可以简单地使用set.keys
和迭代Iterable[Int]
,但会keys
在恒定时间内返回,还是它构造一个Itearble
线性时间?
我知道我会一一收到所有的钥匙。实施一个mutable.HashSet
只是为了存储所有的密钥,因为它们进来是矫枉过正的吗?
就像是
class Foo{
val set = new mutable.HashSet[Int, Int]()
val keys = new mutable.HashSet[Int]()
def add(key: Int, value: Int) = {
// do-stuff
set.put(key, value)
keys += key
}
def iterate() = {
//iterate through all keys
keys.foreach(f=>{
})
}
}
他们是实现这一目标的更有效方法吗?
解决方案
推荐阅读
- c# - 如何正确编写不依赖于系统的单元测试
- javascript - 使用 lodash 查找对象数组上的所有重复项
- git - Bazel 测试返回私有 GitHub 存储库的校验和不匹配错误
- dart - 如何转换流
流式传输 在飞镖 - python - 每当任务(patternstart.finditer 中的匹配)返回 None 时,我如何创建操作?
- php - 在所有索引中为每个循环在数组中添加新的键值对
- perl - Perl:如何使用严格的 perl 文件中其他 pl 文件中定义的常量?
- sql-server - SQLCMD 还原未还原所有存储过程
- java - Spring 依赖注入 - 私有字段 - 反模式?为什么它甚至可以工作?
- ruby-on-rails - 如何在 Rails 中仅显示一个带有嵌套表单的项目?