Step into Scala - 09 - 集合

目录

摘要

List 可变性,创建,空 List,List 组成,::,可变 List

集合

List

概念

List 在 Scala 中是不可变的,每次插入新元素实际是生成新的对象。

定义 List
  • “List” 可以直接通过 apply() 函数进行定义。
  • “空 List” 为 Nil
  • 一个”非空 List” 是由含有一个元素的头部及含有其余元素的尾部构成的。
var digits = List(1, 2)
println(digits) //List(1, 2)

val empty = List()
println(empty == Nil) //true
List 构造器

特殊符号 :: 可以用于构造 List。:: 具有右结合性,即 A :: B :: C 会被翻译成 A :: (B :: C)

val newDigits = 5 :: digits
println(newDigits) //List(5, 1, 2)

因为右结合性的原则,所以 :: 右边只能出现 List,即 5 :: digits 不能写成 digits :: 5

List 的基本构造与方法
  • head 返回 List 头部,空 List 会报异常
  • tail 返回 List 中除了头部的部分,空 List 会报异常
  • tail.head
  • sum 对 List 的值进行累加
var digits = List(1, 2, 3)
println(digits.head) //1
println(digits.tail) //List(2, 3)
println(digits.tail.head) //2
println(digits.sum) //6
List 的模式匹配

在 Scala 中,:: 实际是通过定义 case class 来实现的。

def isort(xs: List[Int]): List[Int] = xs match {
  case List() => List()
  case x :: xs1 => {
    println("x", x, xs1);
    insert(x, isort(xs1))
  }
}
def insert(x: Int, xs: List[Int]): List[Int] = xs match {
  case List() => List(x)
  case y :: ys => if (x <= y) x :: xs else y :: insert(x, ys)
}
val numbers = List(9, 5, 1, 3)
val newNumbers = isort(numbers)
println("newNumbers", newNumbers) //(newNumbers,List(1, 3, 5, 9))

MutableList

概述

MutableList 是可变的 List。

使用
var list = new mutable.MutableList[Int]
list +=(2, 3, 5)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值