数组的常见操作
代码语言:javascript复制val a = Array(1,2,3,4,5)
//数组求和
val sum = a.sum
//获取数组的最大值
val max = a.max
//对数组进行排序
scala.until.Sorting.quickSort(a)
//获取数据的所有元素内容
a.mkString
//用符号分隔开
a.mkString(",")
//加上左右符号
a.mkString("<",",",">")
//toString 函数
a.toString
b.toString
使用 yield 和函数式变成转换数组
代码语言:javascript复制// 对 Array 进行转换
val a = Array(1,2,3,4,5)
val a1 = for(ele <- a) yield ele * ele
// 对 ArrayBuffer 进行转换
val b = ArrayBuffer[Int]()
b = (1,2,3,4,5)
val b1 = for(ele <- b) yield ele * ele
// 结合 if 守卫
val a2 = for(ele <- a if ele % 2 == 0) yield ele * ele
// 使用函数式编程转换数组
// _ 代表任意一个元素,这里就是对于 a 中的每一个元素如果 % 2 == 0 那么映射一下, 后面的 _ 代表判断后的也就是偶数,对于每一个偶数变成二倍。
a.filter(_ % 2 == 0).map(_ * 2)
// 第二种方式
a.filter{_ % 2 == 0}map{_ *2}
Map
代码语言:javascript复制//创建一个不可改变的 Map
val ages = Map("Li" -> 18,"Chy" -> 19)
//创建可变的 Map
val ages = scala.collection.mutable.Map("Li" -> 18, "Chy" -> 19)
ages("Li") = 19
// 另外方式
val ages = Map(("Li",19), ("Chy",18))
// 创建一个空的 HashMap
val ages = new scala.collection.mutable.HashMap[String,Int]
访问 Map 的元素
代码语言:javascript复制// 获取指定 key 对应的 value,如果 Key 不存在,会报错
val LiAge = ages("Li")
// 使用 contains 函数检查 key 是否存在
val LiAge = if(ages.contains("Li"))ages("Li")else 0
// getOrElse 函数
val LiAge = ages.getOrElse("Li",0)
要是不检查直接访问到不存在会报错。
修改 Map 的元素
代码语言:javascript复制// 更新 Map 元素
ages("Li") = 20
// 增加多个元素
ages = ("Ni" -> 20 , "Yue" -> 21)
// 移出元素
ages -= "Ni"
// 更新不可改变的 Map,和下面那个道理其实是新申请了一个。对于 immutable 是不可改变的。
val ages1 = ages ("Ni" -> 20 , "Yue" -> 21)
// 移动不可改变的 Map 的元素
val ages2 = ages - "Ni"
遍历 Map
代码语言:javascript复制// 遍历 map 的 entrySet
for((key,value) <- ages)println(key " " value)
// 遍历 map 的 key
for(key <- ages.keySet) println(key)
// 遍历 map 的 value
for(value <- ages.value) println(value)
// 生成新的 map ,反转 key 和 value
for((key,value) <- ages) yield(value,key)
// 这里如果 key 重复了会发生?
// 会将最后面当做最后的值,前面的会覆盖
SortedMap 和 LinkedHashMap
代码语言:javascript复制// SortedMap 可以自动对 Map 的 key 的排序
val ages = scala.collection.immutable.SortedMap("Li" -> 12,"Cui" ->14, "Yue" -> 5)
// LinkedHashMap 可以记住插入 entry 的顺序
val ages = new scala.collection.mutable.LinkedHashMap[String,Int]
ages("Cui") = 14
ages("Li") = 12
ages("Yue") = 5
Map 的元素类型 - Tuple
代码语言:javascript复制val t = ("Li",12)
// t._1 = Li
// t.2 = 12
// 访问方式: t._1
// zip 操作
val names = Array("Li","Cui","Chy")
val ages = Array(12,15,5)
val nameAges = names.zip(ages)
for((name,age) <- nameAges) println(name " " age)