Scala
集合
概述
- 集合本质上就是一个用于存储1个到多个数据的容器。在Scala中,集合可以分为三大类:
Seq(序列),Set(集合)和Map(映射)。基于这三大类,衍生出来众多的子类- 序列:元素有序可重复
- 集合:元素无序不可重复
- 映射:键值对结构数据
- 在Scala中,所有的集合都混入了
Iterable特质,意味着所有的集合都可以被迭代遍历 - Scala中的集合分为可变集合(
scala.collection.mutable)和不可变集合(scala.collection.immutable)- 所谓的不可变集合,指的是集合被创建好之后,长度不可变,且其中的元素也不能改变。如果对不可变集合中的元素进行增删操作,那么不会改变原集合,而是会产生一个新的集合
- 所谓的可变集合,指的是集合创建好之后,依然可以对元素进行增删操作,并且不会产生新集合,而是修改原集合
数组
不可变数组(Array)
-
不可变数组定义好之后,长度不能发生变化,元素也不能增删;如果增删元素,那么会产生一个新的数组
-
定义方式
package com.fe.array object ArrayDemo { def main(args: Array[String]): Unit = { // 不可变数组定义方式 // 方式一:val 数组名:Array[元素类型] = new Array[元素类型](数组长度) // 数组定义好之后,每一个位置都会有默认值 val arr: Array[Int] = new Array[Int](5) arr(0) = 3 // 将数组转化为字符串 println(arr.mkString(",")) // 方式二: // int[] arr = new int[]{3,4,1,4,5} val arr2: Array[Int] = Array(3, 1, 7, 8, 4) println(arr2.mkString(",")) } } -
应用一
package com.fe.array object ArrayDemo2 { def main(args: Array[String]): Unit = { // 不可变数组定义好之后长度不可变 val arr = Array(2, 4, 8, 7, 1, 5, 6) // 应用一:修改数组中元素的值 // 方式一:数组名(下标) = 数据 arr(3) = 4 // 方式二:提供了update方法来修改元素数据 arr.update(2, 5) // 应用二:遍历数组 // 方式一:转化为字符串 val str = arr.mkString(", ") println(str) // 方式二:通过下标来遍历 for (i <- 0 until arr.length) println(arr(i)) // 方式三:增强for循环 // 增强for循环本质上就是在对元素进行迭代遍历 for (i <- arr) println(i) // 方式四:迭代遍历 val it = arr.iterator while (it.hasNext) println(it.next()) // 方式五:foreach方法 arr.foreach(x => println(x)) // 顺次使用参数,并且参数只使用了一次 arr.foreach(println(_)) // println(3,5, (x, y) => x+ y) // println(3,5, _ + _ ) // 函数体只有一句,并且使用了已经存在函数,且参数是一一对应,那么此时参数列表可以省略 arr.foreach(println) } } -
应用二
package com.fe.array object ArrayDemo3 { def main(args: Array[String]): Unit = { val arr = Array(2, 4, 8, 7, 1, 5, 6) // 应用三:数组扩容 // Array类中提供了+:和:+的方式来对数组进行扩容,本质上都是产生一个新的数组 // :+ 在数组的末尾来新添元素,构成一个新的数组 val r1 = arr :+ 3 println(r1.mkString(", ")) // +: 在数组的头部来新添元素,构成一个新的数组 val r2 = arr.+:(3) println(r2.mkString(", ")) val r3 = 3 +: arr println(r3.mkString(", ")) val r4 = 4 +: arr :+ 3 println(r4.mkString(", ")) // 应用四:数组合并 val nums1 = Array(1, 2, 3, 4, 5) val nums2 = Array(6, 7, 8, 9) // 方式一:通过++合并 val v1 = nums1 ++ nums2 println(v1.mkString(", ")) // 方式二: ++: 或者 :++ // ++:等价于++ val v2 = nums1 ++

最低0.47元/天 解锁文章
674





