List集合(scala)

特点

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转换成可变参数
    }
}

猜你喜欢

转载自www.cnblogs.com/JZTX123/p/10593095.html