特点
List集合最大的特点就是:
有序 重复
定长List集合
- Nil是什么?
scala> Nil
res0: scala.collection.immutable.Nil.type = List()
可以看到,所谓的
Nil
其实就是一个(不可变的)空的List集合。
- 创建List
val list = List(1,2,3,4,5)
- head
list.head // 其实就是第一个元素:1
- tail
list.tail // 除第一个外的所有元素:2,3,4,5
可以看到,一个List集合,其实就是由head和tail构成。
- 巧妙构建List集合
scala> val l1 = 1::Nil // 使用::连接,前面是head,后面是tail,即1和Nil构成了一个新的集合
l1: List[Int] = List(1)
scala> val l2 = 2::l1 // 2代表head,l1代表tail
res0: List[Int] = List(2, 1)
scala> val l3 = 1::2::3::Nil // 构建List集合
l3: List[Int] = List(1, 2, 3)
变长List集合
- 创建变长List
val list = scala.collection.mutable.ListBuffer[Int]()
- 增加/删除元素(通用)
// 增加
list += 2
list += (3,4,5)
list ++= List(6,7,8,9)
// 减去
list -= 2
list -= (3,4,5)
list --= List(6,7,8,9)
- 删除不存在的元素
list -= 10 // 减去不存在的元素并不会报错,只是执行无效而已
- 插入元素
list.insert(0,1)
- 判断
list.isEmpty
list.tail
list.head
- 转换
list.toList() // 转换成定长的List集合
list.toArray() // 转换成定长的数组
其实这些操作都是相同的套路而已!
一个集合求和案例
def sum(nums:Int*):Int={
if(nums.length == 0){
0
}else{
// 递归调用
nums.head + sum(nums.tail:_*) // :_*能把Seq转换成可变参数
}
}