创建 Array,可变的同类对象序列,长度不可变,值可变: val example = new Array[String](3) 创建长度为3的空数组,数组里的元素类型为字符串,数组赋值可以通过example(0) = "a" 注意:字符串是双引号,字符是单引号,在Scala里面
也可以用 val example:Array[String] = new Array[String](3),因为Scala有类型推断,所以前面是否有类型定义不影响创建过程,但是可以提高可读性。
打印数组元素:可以用to, 也可以用until,区别在于:to 会到最后一位,until类似于python range,只会到length-1这个位置,正好符合;因为数组是从索引 0 开始计数的。
val example = new Array[String](3)
val example:Array[String] = new Array[String](3) #第一行第二行等价
example(0) = "a"
example(1) = "b"
example(2) = "c"
for (i<- 0 to a.length-1){
println(a(i))
}
for (i<- 0 to until a.length){
println(a(i))
}
数组更新:example.update(0,"value");前面的数字表示索引位置,后面的"value"代表更新值,需要符合数组定义的类型;
列表:不可变类型,创建列表:val example = List(),创建空列表,并且,区别于Python,Scala中列表没有append方法,如果需要添加元素,可以使用 value :: example方法,其中value表示添加的值,值会添加在列表前面,examle::value 值添加在后面;需要去列表元素类型一致;或者使用可变列表类型ListBuffer,进行列表元素修改;List1 ::: List2 列表合并;列表取数的方法与数组一样,example(0);0是索引位置。都不能进行切片操作(Python可以进行切片)
Scala常用的List方法:
example.head() 返回列表第一个元素
example.last() 返回列表最后一个元素
example.init() 返回除最后一个元素以外的,其他所有元素
example.tail() 返回除第一个元素以外,其他所有元素
example.drop(2) 删除前面两个元素
example.dropRight(2) 删除从后面算的,两个元素
example.reserve() 列表翻转
example.count(s =>s==1) 返回条件为真的元素数量
Scala 元组Tuple:不可变类型,但是区别于List,元组可以包含几种不同的数据类型
val example = ("a",1)
example._1
example._2
#元组区别前面两种形式的取数方式,可以认为元组是由1索引开始
Scala 集合Set: 存在可变与不可变类型,需要用户定义调用,默认可变类型:元素类型可以多样
var example = Set("a",1,2)
example += 3
返回test:("a",1,2,3)
import scala.collection.immutable.HashSet
HashSet只能包含一种数据类型,否则报错;
Scala Map:可变Map 键值对形式引入,
import scala.collection.mutable.mutable.Map
val example = Map[Int,String]()
example += (1-> "hello")
example += (2-> "world")
example(1) 输出hello
对Map进行循环遍历时,每次得到是一个tuple,倘若需要打印键值对,可以在此基础上操作:如下:
for(s <- example){
var KeyValue = s
println(KeyValue._1)
}
打印结果:
1
2
如果换成 println(KeyValue._2)
则打印 hello
world
map、flatmap方法:
val example = List[Int](1,2,3)
example.map(s => s + 1)
返回:List[Int](2,3,4) 对每个元素,进行一个 + 1 操作;
Reduce:递归操作
求和:
val example = List[Int](1,2,3,4)
example.reduce((sum,n) => sum + n)
返回值:10
执行过程:sum = 1; n = 2
sum = 1 + 2; n = 3
sum = 1 + 2 + 3; n = 4
sum = 1 + 2 + 3 + 4;
返回最大值:
example.reduce((max,n) => if (max>n) max else n)
返回:4
执行过程同上
Foreach:遍历执行,对每个元素进行操作,类似于Map操作