Scala课程04
程序员文章站
2022-06-14 16:52:37
...
核心内容:
1、Scala数组操作实战详解
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
知识点:
(1)静态数组使用Array进行创建、动态数组使用ArrayBuffer进行创建
(2)用户提供初始值时不要使用new
(3)scala中的yield的主要作用是记住每次迭代中的有关值,并逐一存入到一个数组中.
示例程序:
scala中数组的常见操作
object ScalaAction1
{
println("Welcome to the Scala worksheet") //> Welcome to the Scala worksheet
//定义静态数组
val a1 = new Array[Int](3) //> a1 : Array[Int] = Array(0, 0, 0)
val a2 = new Array[String](3) //> a2 : Array[String] = Array(null, null, null)
val a3 = Array[Int](20,30,40) //> a3 : Array[Int] = Array(20, 30, 40)
a3(1) = 100
for(ele<- a3) println(ele) //> 20
//| 100
//| 40
//定义动态数组的两种方式
import scala.collection.mutable.ArrayBuffer
val a4 = new ArrayBuffer[Double]() //> a4 : scala.collection.mutable.ArrayBuffer[Double] = ArrayBuffer()
val a5 = ArrayBuffer[Double](23.0,52.0) //> a5 : scala.collection.mutable.ArrayBuffer[Double] = ArrayBuffer(23.0, 52.0)
//|
//动态数组的一些基本操作
val a6 = ArrayBuffer[Int]() //> a6 : scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
a6 += 10 //> res0: IT.ScalaAction1.a6.type = ArrayBuffer(10)
a6 += (20,30) //> res1: IT.ScalaAction1.a6.type = ArrayBuffer(10, 20, 30)
a6 ++= Array(40,50,60) //> res2: IT.ScalaAction1.a6.type = ArrayBuffer(10, 20, 30, 40, 50, 60)
a6 //> res3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 20, 30, 40
//| , 50, 60)
a6.trimEnd(2)
a6 //> res4: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 20, 30, 40
//| )
a6.insert(1,100,200)
a6 //> res5: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 100, 200,
//| 20, 30, 40)
a6.remove(2) //> res6: Int = 200
a6 //> res7: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(10, 100, 20, 3
//| 0, 40)
val a7 = a6.toArray //> a7 : Array[Int] = Array(10, 100, 20, 30, 40)
//遍历数组的两种方式
for(ele<- a7) println(ele) //> 10
//| 100
//| 20
//| 30
//| 40
for(i<- 0 until a7.length) println(a7(i)) //> 10
//| 100
//| 20
//| 30
//| 40
//yield的用法
val a8 = for(ele<- a7) yield ele*2 //> a8 : Array[Int] = Array(20, 200, 40, 60, 80)
val a9 = for(ele<- a7;if(ele%20 == 0)) yield ele*2
//> a9 : Array[Int] = Array(200, 40, 80)
val a10 = a7.filter(_%20==0).map(2*_) //> a10 : Array[Int] = Array(200, 40, 80)
//对数组常用的算法操作
val sum = Array(10,20,30).sum //> sum : Int = 60
val maxnum = Array(10,20,30).max //> maxnum : Int = 30
val str2 = ArrayBuffer("zh","ming","abcde").max
//> str2 : String = zh
//排序之后返回一个新的数组
val a11 = a7.sorted //> a11 : Array[Int] = Array(10, 20, 30, 40, 100)
a7 //> res8: Array[Int] = Array(10, 100, 20, 30, 40)
//对动态数组内部进行排序,不返回新的数组
scala.util.Sorting.quickSort(a7)
a7 //> res9: Array[Int] = Array(10, 20, 30, 40, 100)
//指定分隔符,将数组中的元素连接起来
val str3 = a7.mkString(" and ") //> str3 : String = 10 and 20 and 30 and 40 and 100
val str7 = a7.mkString("\t") //> str7 : String = 10 20 30 40 100
val str8 = a7.mkString("<",",",">") //> str8 : String = <10,20,30,40,100>
//定义二元数组的方式
val matrix = Array.ofDim[Double](2,3) //> matrix : Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0), Array(0.0, 0.0
//| , 0.0))
matrix(1)(0) = 10.0
matrix //> res10: Array[Array[Double]] = Array(Array(0.0, 0.0, 0.0), Array(10.0, 0.0,
//| 0.0))
}
上一篇: 欧洲室内设计历史风格组图欣赏
下一篇: 莴苣干你知道多少