4.6 Scala集合:Vector

什么是向量?

根据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)
© 版权声明
THE END
喜欢就支持一下吧
点赞142赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

夸夸
夸夸
还有吗!没看够!
取消
昵称表情代码图片

    暂无评论内容