scala 学习之: list.fill 用法
2016-11-08 15:20
417 查看
题目描述:
根据List中的元素,将其展开, 与之前的encodeList 做相反的操作。
思路: 使用之前提到的foldLeft函数, 从左到右遍历List,将其每一个元组展开,放入初始值里面。
代码:
List.fill:
向集合中插入n个类型为A的元素。
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 span 用法
- scala List和Tuple的用法
- each与list的用法(PHP学习)
- 第84讲:Scala中List和ListBuffer设计实现思考学习笔记
- scala学习之:List的foldLeft、foldRight操作实战
- scala学习之:List的map、flatMap、foreach、filter的操作代码实战
- List Control & Tree Control & CImageCtrl 基本常规用法学习笔记
- 对List进行高效的排序和倒排序代码实战之Scala学习笔记-26
- Type、Array、List、Tuple模式匹配实战解析之Scala学习笔记-18
- 第82讲:Scala中List的ListBuffer是如何实现高效的遍历计算的?学习笔记
- List的一阶函数操作代码实战详解之Scala学习笔记-25
- 黑马学习笔记——public void Delete<T>(List<T> EntityList) where T : class, new() 的用法
- scala编程第16章学习笔记(4)——List对象的方法
- python学习-python list中append()与extend()用法
- 第83讲:Scala中List的实现内幕源码揭秘学习笔记
- 读《重构》,学习Collections.unmodifiableList()用法
- VS2010 C++学习(6): ListCtl用法及ADO方式读写Access程序
- C++学习 STL之list之用法小结
- scala学习:List的一阶函数操作代码实战
- scala学习之:ListBuffer、ArrayBuffer、Queue、Stack的操作代码实战