Какова временная сложность mutable.HashSet.keys - PullRequest
0 голосов
/ 29 мая 2020

Предположим, я реализую следующий класс:

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=>{

    })
  }
}

Это более эффективный способ добиться этого?

...