一、定长数组Array,长度不可变
val array1=new Array[Int](5) //常规定义方法
array1(1)=1; //赋值第2个元素的值,注意数组下标是从0开始的
println(array1(1));
val array = Array(1,2,3,4,5) //直接带初始化赋值的方式,其实调用的是apply方法
println(array(1));//使用下标的方式访问数组中的原始,下标从0开始
array.foreach(println) //打印集合的所有元素 ***
二、变长数组ArrayBuffer,长度可变
import scala.collection.mutable.ArrayBuffer
val c=ArrayBuffer[Int]() //变成数组定义
c ++= Array(1,2,3) //++= 是一个方法,可以追加多个元素
c +=4; //+= 也是一个方法,追加一个元素,此处追加的元素为4
c -= 1 //-= 表示把第一次出现的哪个元素移除,有多个存在时,只移除第一个,此处移除的元素是1
for(i <- 0 until(c.length, 2)) {//采用下标方式,访问元素,此处采用步长为2进行访问
println(c(i))
}
for(ele <- c) { //集合遍历所有元素,建议使用的方式 *****
println(ele)
}
三、定长列表List
// 构造列表的两个基本单位是 Nil 和 ::,Nil 表示一个空列表,::为连接符
//连接列表::: 、 List.:::() 或 List.concat() 方法来连接两个或多个列表
val list=List(1,2,3) //定义方式一
println(list(2)) //列表访问方式
val list1 = 1::2::3::4::Nil //定义方式二
四、变
长列表
ListBuffer
//-------------变长列表ListBuffer,方法与ArrayBuffer类似
import scala.collection.mutable.ListBuffer
val list2=ListBuffer[Int]()
list2 ++= list
list2 ++= list1
list2.foreach(print) //打印列表中的每个元素
list2 -= (1,4) //移除第一次出现的元素1和4,有多个存在时,只移除第一个
list2.foreach(print)
五、Map & HashMap
/*
scala map:
Map(映射)是一种可迭代的键值对(key/value)结构。
所有的值都可以通过键来获取。
Map 中的键都是唯一的。
Map 也叫哈希表(Hash tables)。
Map 有两种类型,可变与不可变,区别在于可变对象可以修改它,而不可变对象不可以。
默认情况下 Scala 使用不可变 Map。如果你需要使用可变集合,你需要显式的引入 import scala.collection.mutable.Map 类
在 Scala 中 你可以同时使用可变与不可变 Map,不可变的直接使用 Map,可变的使用 mutable.Map。
*/
//-------------不可变Map
val a = Map("ruoze"->30, "dove"->2) //默认使用的是不可变Map
a.foreach(println) //依次打印所有元素
println(a("ruoze")) //获取某个key的值,等价于 a.get("ruoze").get
println(a.get("ruoze").get)
//-------------可变Map
val b = scala.collection.mutable.Map("ruoze"->30, "dove"->2)
b +=("zhangsan"->4, "wangwu" ->5) //增加键值对的方法
val m = scala.collection.mutable.HashMap[String,Int]()
m +=("dove"->3, "zhangsan"->4, "wangwu" ->5)
for((key,value) <- m) { //遍历所有的key/value
println(key + " : " + value)
}
for(key <- m.keySet){//遍历所有的key,通过key可以获得value
println(key + " : " + m.getOrElse(key, 0))
}
for(value <- m.values) {//遍历所有的value
println(value)
}
for((key,_) <- m) {
println(key + " : " + m.getOrElse(key, 0))
}