使用列表
列表同数组的区别:
- 列表为不可变的
- 列表具有递归结构,但数组是连续的
所有列表可以通过Nil和::来构造出来,
连接列表 :::
length
last/init head/tail
reverse
归并排序
def merge(xs:List[T], ys:List[T]):List[T] =
(xs, ys) match {
case (Nil, _) => ys
case (_, Nil) => xs
case (x::xs1, y::ys1) =>
if(less(x,y)) x::merge(xs1, ys)
else y::merge(xs, ys1)
}
折叠列表,类似二叉树? /: :\
(z/:List(a, b, c))(op)等价于op(op(op(z,a),b),c)
列表排序 sort
集合类型
ListBuffer
ArrayBuffer
Queue
Stack
val counts = mutable.Map.empty[String, Int]
val counts = Map("i"->1)
有状态的对象
函数式(不可变)对象 有状态的对象
var变量x的getter方法命名为x, setter方法命名为x_=
var a:Float =_
=_ 初始化默认值,
类型参数化
更好地编写泛型类和trait