Преобразование карты Scala в список

У меня есть карта, которую мне нужно сопоставить с другим типом, и результат должен быть быть списком. У меня есть два способа (по-видимому) выполнить то, что я хочу, поскольку вызов карты на карте, кажется, всегда приводит к карте. Предположим, у меня есть карта, которая выглядит так:

val input = Map[String, List[Int]]("rk1" -> List(1,2,3), "rk2" -> List(4,5,6))

Я могу сделать:

val output = input.map{ case(k,v) => (k.getBytes, v) } toList

Или:

val output = input.foldRight(List[Pair[Array[Byte], List[Int]]]()){ (el, res) =>
  (el._1.getBytes, el._2) :: res
}

В первом примере я конвертирую тип, а затем вызываю toList. Я предполагаю, что среда выполнения примерно такая же, как O (n * 2) , а необходимое пространство - n * 2 . Во втором примере я конвертирую тип и генерирую список за один раз. Я предполагаю, что время выполнения составляет O (n) , а необходимое пространство составляет n .

Мой вопрос: являются ли они по существу идентичными, или второе преобразование сокращает память / время /так далее? Кроме того, где я могу найти информацию о стоимости хранения и времени выполнения различных преобразований scala?

Заранее благодарим.

28
задан bmatheny 9 August 2011 в 15:26
поделиться