什么是向量?
根据Scala文档,Vector是类似于List的数据结构。但是,它解决了List中随机访问的低效问题。
【示例】学习如何使用Scala的不可变向量来执行一些常见的操作,比如初始化Vector,访问特定索引的元素,向Vector添加元素,以及创建一个空Vector。
object VectorDemo {
def main(args: Array[String]): Unit = {
println("1: 初始化一个具有3个元素的向量")
val vector1: Vector[String] = Vector("苹果","香蕉","葡萄干")
println(s"vector1的元素 = $vector1")
println("\n2: 访问向量在特定索引的元素")
println(s"索引0的元素 = ${vector1(0)}")
println(s"索引1的元素 = ${vector1(1)}")
println(s"索引2的元素 = ${vector1(2)}")
println("\n3: 使用:+ 在Vector末尾添加元素")
val vector2 = vector1 :+ "火龙果"
println(s"使用:+添加元素的向量 = $vector2")
println("\n4: 使用+:在Vector前面添加元素")
val vector3 = "草莓" +: vector1
println(s"使用+:在Vector前面添加元素的向量 = $vector3")
println("\n5: 使用++ 将两个向量添加在一起")
val vector4 = vector1 ++ Vector[String]("水蜜桃")
println(s"使用++将两个向量添加到一起后 = $vector3")
println("\n6: 初始化一个空向量")
val emptyVector: Vector[String] = Vector.empty[String]
println(s"String类型的空向量 = $emptyVector")
}
}
Vector 类是List 和Array 类的混搭。
它结合了Array 和List 的执行特性。它提供了恒定时间复杂度的索引访问和线性访问。它既允许快速的随机访问,也允许快速的更新功能。
使用向量是简单而直接的:
val v = Vector(1, 2, 3)
v.sum // 6
v.filter(_ > 1) // Vector(2, 3)
v.map(_ * 2) // Vector(2, 4, 6)
下面是使用示例:
val v1 = Vector(0,10,20,30,40);
val v2 = v1 :+ 50;
val v3 = v2 :+ 60;
val v4 = v3(4);
val v5 = v3(5);
下面这个示例代码中,演示了Vector的创建和操作:
// 创建一个Vector
val x = IndexedSeq(1,2,3)
// 通过索引进行访问
x(0)
// 不可修改,创建新的Vector
val a = Vector(1,2,3)
val b = a ++ Vector(4,5)
// 使用updated方法替换一个元素
val c = b.updated(0,10) // 实际上是返回一个新的Vector
// 使用常用的过滤方法
val a = Vector(1,2,3,4,5)
val b = a.take(2)
val c = a.filter(_>2)
// 貌似可变:var声明,结果赋给自身
var a = Vector(1,2,3)
a = a ++ Vector(4,5)
a
// 混合可变变量(var)和一个不可变集合
var int = Vector(1)
int = int :+ 2
int = int :+ 3
int.foreach(println)
© 版权声明
本站网络名称:
知趣
本站永久网址:
https://www.qubaa.top
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长删除处理。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
暂无评论内容