一、数组
1、定长数组
object ArrayApp {
def main(args: Array[String]): Unit = {
val a = new Array[String](5)
println(a.length)
a(1) = "hello"
// 调用的是 apply 方法
val b = Array("hadoop", "spark", "scala")
b(0) = "Python"
val c = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
c.sum
c.min
c.max
println(c.mkString(","))
println(c.mkString(" and "))
println(c.mkString("<", ",", ">"))
}
}
2、可变数组
object ArrayApp {
def main(args: Array[String]): Unit = {
val d = ArrayBuffer[Int]()
println(d.length)
d += 1
d += 2
d += (3, 4, 5)
d ++= Array(6, 7, 8)
// 在第 0 位置添加元素 0
d.insert(0, 0)
// 在位置7 删除 1 个元素
d.remove(7, 1)
// 在末尾删除 2 个元素
d.trimEnd(2)
for (i <- 0 until d.length) {
println(d(i))
}
// 这种更常用
for (i <- c) {
println(i)
}
// 反向
for (i <- (0 until d.length).reverse) {
println(d(i))
}
// 变成不可变数组
println(d.toArray)
}
}
二、List
1、定长List
object ListApp {
def main(args: Array[String]): Unit = {
val l = List(1, 2, 3, 4, 5)
println(l.head)
// 考点:剩下的所有元素是一个 tail,不是最后一个叫 tail
println(l.tail)
// 1 表示 head,Nil 表示 tail,使用 :: 将两者拼起来当成一个新的 List
val l2 = 1 :: Nil
// 2 是 head,l2 是 tail,别弄反了
val l3 = 2 :: l2
}
}
2、变长List
object ListApp {
def main(args: Array[String]): Unit = {
val l5 = ListBuffer[Int]()
l5 += 2
l5 += (3, 4, 5)
l5.tail
l5.tail.head
l5 ++= List(6, 7, 8, 9)
l5 -= 2
// 1 没有就不减了
l5 -= (1, 4)
l5 --= List(5, 6, 7, 8)
// 转成不可变 List
l5.toList
// 转成不可变数组
l5.toArray
}
}
3、自己实现求和
object ListApp {
def main(args: Array[String]): Unit = {
println(sum())
println(sum(1, 2, 3, 4))
}
// 自己实现 sum
def sum(nums: Int*): Int = {
if (nums.length == 0) {
0
} else {
// :_*,固定写法。能够将 seq 转换成可变参数
nums.head + sum(nums.tail:_*)
}
}
}
4、Set
Set 无序,不可重复。用法参考List 即可