Scala二十四点游戏(5):List简介

jerry Scala 2015年11月25日 收藏

我们在前面介绍Scala编程时对Scala库提供的函数库没有介绍,Scala支持的集合类型比如List,Set,Map,Array功能非常强大,如果你之前用过C#的LINQ,基本上LINQ支持的功能Scala的集合类型都支持,很多以前需要循环来实现的,在Scala中可能只需要一行就可以实现,有时间我们专门来介绍下Scala支持的集合类型。
本篇对Scala中最常用的List类型做个概要的介绍。
List和Array非常想象,但有两个重要的不同点,List是不可变的(immutable),也就是List创建后,不可以修改。List具有递归的结构(也就是链接表结构)而数组不是。
和数组一样,List中的元素必须是同类型的。下面我们来看看如何构造一个List对象:

scala> val fruit = List("apple","oranges","pears")
fruit: List[String] = List(apple, oranges, pears)

scala> val empty=List()
empty: List[Nothing] = List() 

scala> val fruit = "apple" :: "orange" :: "pears"  :: Nil
fruit: List[String] = List(apple, orange, pears)

scala> val empty = Nil
empty: scala.collection.immutable.Nil.type = List()

scala> val nums = 1 :: 2 :: 3 :: 4 :: Nil
nums: List[Int] = List(1, 2, 3, 4)

List可以通过构造函数创建,也可以通过:: 连接每个元素,::是右结合的,在通过::构造列表时,需要在最右边使用Nil,这样编译器才知道构造一个List,因为字符串String本身不支持::操作。

基本操作

  • head 取List的首元素
  • tail 取除首元素之外的List的其它元素
  • isEmpty 判断List是否为空