У меня есть карта, которую нужно сопоставить с другим типом, и результатом должен быть список.У меня есть два способа (казалось бы) выполнить то, что я хочу, поскольку вызов карты на карте, кажется, всегда приводит к карте.Предполагая, что у меня есть какая-то карта, которая выглядит следующим образом:
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?
Заранее спасибо.