第三讲 Scala集合入门和函数式编程(上)
一、Scala集合入门
scala的集合分为了两类,一类是可变的集合(集合可以执行增删改查操作),另一类是不可变集合(集合元素在初始化的时候确定,后续只能进行查,有的可以进行修改,有的不可以)。二者可能名称一样,但是在不同的包下面,对应的包为:scala.collection.mutable和scala.collection.immutable。
scala默认使用的集合,或者默认导入的包是immutable。
说明:这里提到的可变或者不可变,指的是容器内部的内容,以及容器的长度可变或者不可变。
(一)、Scala数组
1、不可变数组Array
Array可以理解为java中的数组。
(1)数组的定义
java中数组的定义:
new int[5];
int[] aa = {1, 2, 3};
int[] bb = new int[]{1, 2, 3, 4}
scala中数组的定义:
val array = new Array[类型(比如Int/Long)](5) --->定义了一个长度为5的Int/Long类型的数组,每一个元素都有默认值:0。
val array = Array(1, 2, 3, 4, 5) -->定义类一个初始化内容为1, 2, 3, 4, 5的Int类型的数组。
其中第二种的定义方式,没有new关键,其实是class Array的伴生对象的构建方式。
(2)获取数组中的元素
数组名(index) 比如: val ele = array(3) |
(3)元素的遍历
for(ele <- 数组) { 。。。 } for(i <- array) { println(i) } |
(4)数组的长度
array.length array.size |
(5)数组判断
判断元素是否包含 array.contains(ele) eg: println("判断元素-3时候在数组中存在:" + array.contains(-2)) |
(6)数组元素的拼接输出
使用数组的方法:mkString //拼接数组元素,没有分隔符 println("数组元素:" + array.mkString) //拼接数组元素,使用分隔符", " println("数组元素:" + array.mkString(", ")) //拼接数组元素,使用分隔符", ",起始字符为[,终止字符为] println("数组元素:" + array.mkString("[", ", ", "]")) ========================================= 数组元素:123-35 数组元素:1, 2, 3, -3, 5 数组元素:[1, 2, 3, -3, 5] |
2、可变数组ArrayBuffer
ArrayBuffer就可以理解为java中的ArrayList。
(1)ArrayBuffer的定义
//定义一个Int类型的可变数组 val arrayBuffer = new ArrayBuffer[Int]() //定义一个String类型的可变数组 val arrayBuffer = ArrayBuffer[String]() //定义一个String类型的可变数组,小括号内是元素 val arrayBuffer = ArrayBuffer[String](“hello”) |
(2)crud
//增 println("----------arraybuffer的增的操作--------------") ab.append(1) println("ab.append(1): " + ab) ab.append(2, 3, 4) println("ab.append(2, 3, 4): " + ab) //insert(index, ele*)在指定的索引位置上插入一个或多个元素 ab.insert(2, -3, -2) println("ab.insert(2, -3, -2): " + ab) //查 //获取指定索引位置的元素 val ele = ab(5) println("ab(5): " + ele) //数组长度 println("可变数组ab的长度:" + ab.size) //改 ab(5) = -5 println("修改之后的数组为:" + ab) //删 ab.remove(3)//删除指定索引位置上的元素 println("ab.remove(3): " + ab) ab.remove(2, 2)//remove(index, count)从 |