首页 > 代码库 > scala 学习之: list.fill 用法
scala 学习之: list.fill 用法
题目描述:
Decode a run-length encoded list. Given a run-length code list generated as specified in problem P10, construct its uncompressed version. Example: scala> decode(List((4, ‘a), (1, ‘b), (2, ‘c), (2, ‘a), (1, ‘d), (4, ‘e))) res0: List[Symbol] = List(‘a, ‘a, ‘a, ‘a, ‘b, ‘c, ‘c, ‘a, ‘a, ‘d, ‘e, ‘e, ‘e, ‘e)
根据List中的元素,将其展开, 与之前的encodeList 做相反的操作。
思路: 使用之前提到的foldLeft函数, 从左到右遍历List,将其每一个元组展开,放入初始值里面。
代码:
def decodeList[T](a:List[(Int, T)]): List[T] = a.foldLeft(List[T]()){ case (res, cur) => { val count = cur._1 val content = cur._2 res:::List.fill(count)(content) } } val b = List((10, "a"), (2,"zb")) println(decodeList(b))
List.fill:
def fill[A](n: Int)(elem: => A): CC[A] = { val b = newBuilder[A] b.sizeHint(n) var i = 0 while (i < n) { b += elem i += 1 } b.result }
向集合中插入n个类型为A的元素。
scala 学习之: list.fill 用法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。