scala编程第16章学习笔记(1)
2014-11-11 15:47
323 查看
List列表的基本操作
head方法获得列表的第一个元素
tail方法获得列表除第一个元素之外的其它元素
isEmpty:判断列表是否为空,空的话返回真
last:获得列表最后一个元素
init:获得除最后一个元素之外的元素
reverse:反转列表
前缀与后缀:drop、take、splitAt
xs take n 返回xs列表的前n个元素,如果n大于xs.length,则返回整个xs。
xs drop n 返回xs列表除前n个元素之外的所有元素,如果n大于xs.length,则返回空列表。
splitAt操作在指定位置拆分列表,并返回对偶列表。
xs splitAt n等价于(xs take n, xs drop n)
例子如下:
元素选择:apply方法和indices方法
apply方法实现了随机元素的选择,与其它类型一样,当对象出现在应该是方法调用的函数位置上时,就会隐式地插入apply方法
xs apply n 等价于 (xs drop n).head
indices方法可以返回指定列表的所有有效索引值组成的类表:
啮合列表:zip
zip操作可以把两个列表组成一个对偶列表:
如果两个列表的长度不一致,那么任何不能匹配的元素将被丢掉:
zipWithIndex把列表元素与索引值啮合在一起
显示列表:toString方法和mkString方法
toString操作返回列表的标准字符串表达形式:
如果需要其他表达形式,可以使用mkString方法。xs mkString(pre, sep, post)
其中pre是需要在显示的元素之前的前缀字符串,sep为两个元素之间的分割字符串,post为显示在最后面的后缀字符串。
xs.mkString 等价于 xs mkString("", sep, "")
xs.mkString 等价于 xs mkString ""
mkString方法还有名为addString的变体,它可以把构建好的字符串添加到StringBuilder对象中,而不是作为结果返回:
mkString和addString方法都继承自List的超特质Iterable,因此他们可以应用到各种可枚举的集合类上。
head方法获得列表的第一个元素
tail方法获得列表除第一个元素之外的其它元素
isEmpty:判断列表是否为空,空的话返回真
last:获得列表最后一个元素
init:获得除最后一个元素之外的元素
reverse:反转列表
前缀与后缀:drop、take、splitAt
xs take n 返回xs列表的前n个元素,如果n大于xs.length,则返回整个xs。
xs drop n 返回xs列表除前n个元素之外的所有元素,如果n大于xs.length,则返回空列表。
splitAt操作在指定位置拆分列表,并返回对偶列表。
xs splitAt n等价于(xs take n, xs drop n)
例子如下:
scala> List(1, 2, 3, 4, 5) take 2 res2: List[Int] = List(1, 2) scala> List(1, 2, 3, 4, 5) drop 2 res3: List[Int] = List(3, 4, 5) scala> List(1, 2, 3, 4, 5) splitAt 2 res4: (List[Int], List[Int]) = (List(1, 2),List(3, 4, 5))
元素选择:apply方法和indices方法
apply方法实现了随机元素的选择,与其它类型一样,当对象出现在应该是方法调用的函数位置上时,就会隐式地插入apply方法
scala> val abcde=List('a' ,'b', 'c', 'd', 'e') abcde: List[Char] = List(a, b, c, d, e) scala> abcde apply 2 res7: Char = c scala> abcde(2) res8: Char = c
xs apply n 等价于 (xs drop n).head
indices方法可以返回指定列表的所有有效索引值组成的类表:
scala> abcde.indices res9: scala.collection.immutable.Range = Range(0, 1, 2, 3, 4)
啮合列表:zip
zip操作可以把两个列表组成一个对偶列表:
scala> abcde.indices zip abcde res10: scala.collection.immutable.IndexedSeq[(Int, Char)] = Vector((0,a), (1,b),(2,c), (3,d), (4,e))
如果两个列表的长度不一致,那么任何不能匹配的元素将被丢掉:
scala> abcde zip List(1, 2, 3) res11: List[(Char, Int)] = List((a,1), (b,2), (c,3))
zipWithIndex把列表元素与索引值啮合在一起
scala> abcde.zipWithIndex res12: List[(Char, Int)] = List((a,0), (b,1), (c,2), (d,3), (e,4))
显示列表:toString方法和mkString方法
toString操作返回列表的标准字符串表达形式:
scala> abcde.toString res13: String = List(a, b, c, d, e)
如果需要其他表达形式,可以使用mkString方法。xs mkString(pre, sep, post)
其中pre是需要在显示的元素之前的前缀字符串,sep为两个元素之间的分割字符串,post为显示在最后面的后缀字符串。
xs.mkString 等价于 xs mkString("", sep, "")
xs.mkString 等价于 xs mkString ""
scala> abcde mkString ("[", ",", "]") res15: String = [a,b,c,d,e] scala> abcde mkString "" res17: String = abcde scala> abcde.mkString res19: String = abcde scala> abcde mkString ("List(", ", ", ")") res20: String = List(a, b, c, d, e)
mkString方法还有名为addString的变体,它可以把构建好的字符串添加到StringBuilder对象中,而不是作为结果返回:
scala> val buf = new StringBuilder buf: StringBuilder = scala> abcde addString (buf, "(", ";", ")") res21: StringBuilder = (a;b;c;d;e)
mkString和addString方法都继承自List的超特质Iterable,因此他们可以应用到各种可枚举的集合类上。
相关文章推荐
- scala编程第16章学习笔记(4)——List对象的方法
- scala编程第16章学习笔记(3)——List类的高阶方法
- scala编程第17章学习笔记(2)——集和映射
- Scala学习笔记--函数式编程
- scala编程第17章学习笔记(3)
- Scala学习笔记(一)编程基础
- scala 编程思想—学习笔记
- scala编程第18章学习笔记——有状态的对象
- Scala学习笔记 & 一些不错的学习材料 & 函数编程的历史八卦
- 第73讲:Scala界面和事件处理编程进阶实战学习笔记
- scala编程第19章学习笔记(1)——类型参数化
- Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用之Scala学习笔记-41
- Scala学习笔记12 - GUI编程
- 【Scala学习笔记】一、函数式编程的思想
- Scala学习笔记(三)scala的函数式编程
- 第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用学习笔记
- Spark 学习笔记:(二)编程指引(Scala版)
- scala编程第17章学习笔记(4)——元组
- 学习笔记—scala高级编程
- Scala学习笔记(3):纯函数式编程的一些思想和技巧