Предположим, я реализую следующий класс:
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=>{
})
}
}
Это более эффективный способ добиться этого?