Scala Mutable List简介

647 阅读5分钟

Scala Mutable List

Scala Mutable List简介

列表是scala中集合的一种实现,它们是不可变的。列表使用链接列表的数据结构。可变列表也是Scala中集合的一部分,用于存储和检索数据。Scala为我们提供了许多类来创建一个可变的列表。可变意味着列表中的对象是不断变化的。如果我们有这样的需求,即一个对象的列表是不断变化的,那么我们就应该选择一个可变列表。可变类还提供了许多操作来对列表进行操作。也有一种方法可以将易变列表转换为不可变列表。

语法

var variabe_name = new Mutable_class_name[datatype]()
var variabe_name = new Mutable_class_name(val1, val2, val3, val4, val5 , val so on ...)

在上面的语法中,我们可以通过两种方式创建一个易变的列表。

  1. 第一种方法是创建一个空的易变列表,并提到其数据类型。

  2. 第二种方法是同时创建和初始化该列表。

Mutable List在Scala中是如何工作的?

Scala为我们提供了各种类来创建一个可变列表。列表里面的元素是不断变化的,那么我们可以去选择一个易变的列表,但是这个易变的列表我们又可以通过使用toList方法转换为一个不可变的列表。让我们逐一讨论各种易变的类。

1.可变列表

这个类内部使用队列。队列遵循FIFO方法,即先入先出。先插入的元素将首先被移出。 在队列中,我们总是在队列的末端添加元素,并从队列的顶部删除元素。

扩展类。

  • AbstractSeq[A]
  • LinearSeq[A]
  • LinearSeqOptimized[A, MutableList[A]] 。
  • GenericTraversableTemplate[A, MutableList]。
  • 创建者[A, MutableList[A]]
  • 可序列化的

可变的列表的超类型。

  • (Int) ⇒ A, , collection.Iterable[A] 。
  • Seq[A]
  • 可变的
  • Iterable[A], Traversable[A],可遍历的。
  • 可克隆[Seq[A]]
  • 抽象遍历[A]
  • 可遍历一次[A]
  • SeqLike[A, Seq[A]] 。
  • io.Serializable
  • 可序列化的
  • 创建者[A, MutableList[A]]
  • 可增长的[A]。
  • 可清除的
  • 可遍历[A]。
  • GenTraversable[A]
  • 可并行的[A, ParSeq[A]]
  • GenTraversableOnce[A]
  • FilterMonadic[A, MutableList[A]]
  • HasNewBuilder[A, MutableList[A]]
  • LinearSeqOptimized[A, MutableList[A]] 线性序列优化[A]。
  • LinearSeq[A]
  • LinearSeqLike[A, MutableList[A]] 线性序列[A]。
  • SeqLike[A, MutableList[A]] 。
  • 可克隆
  • lang.Cloneable
  • AbstractSeq[A]
  • GenSeq[A]
  • GenSeqLike[A, MutableList[A]]
  • 局部函数[Int, A]
  • 抽象Iterable[A]
  • IterableLike[A, MutableList[A]]
  • 等于
  • GenIterable[A]
  • TraversableLike[A, MutableList[A]] 等于GenIterable[A]。
  • GenTraversableLike[A, MutableList[A]]
  • 任何Ref
  • 任何
  • GenericTraversableTemplate[A, MutableList] [通用可穿越模板]。
  • LinearSeq[A]
  • 抽象Seq[A]
  • 顺序[A]
  • GenIterableLike[A, MutableList[A]]

已知的可变列表的太阳类。

  • 队列
  • QueueProxy
  • 同步队列(SynchronizedQueue

2.ListBuffer

ListBuffer是Scala中另一种可用的可变类。ListBuffer在这个包中可用 >> scala.collection.mutable.ListBuffer。Scala ListBuffer为我们提供了恒定时间的追加和预加操作。但其他大部分操作都是线性的。ListBuffer只是List的实现。

扩展类:

  • AbstractBuffer[A]
  • SeqOps[A, ListBuffer, ListBuffer[A]] 。
  • StrictOptimizedSeqOps[A, ListBuffer, ListBuffer[A]]。
  • ReusableBuilder[A, immutable.List[A]] 。
  • IterableFactoryDefaults[A, ListBuffer]。
  • 默认可序列化

3.链接列表

这是scala中另一种形式的可变列表。在这里,我们创建了列表的头部,这个列表可以被手动操作和创建。这在scala.collection.mutable.LinkedList包中可用。

扩展类。

  • AbstractSeq[A]
  • LinearSeq[A]。
  • GenericTraversableTemplate[A, LinkedList]。
  • LinkedListLike[A, LinkedList[A]]
  • 可序列化

4.双重链接列表

该类内部使用一个包含节点头部和尾部的链接列表。节点有两个部分头和尾。另外,还有下一个和上一个节点的地址。它在scala.collection.mutable.DoubleLinkedList类中可用。

扩展类。

  • AbstractSeq[A]
  • LinearSeq[A]。
  • GenericTraversableTemplate[A, DoubleLinkedList]。
  • 可序列化
  • DoubleLinkedListLike[A, DoubleLinkedList[A]] 。

Scala Mutable List的例子

下面提到了不同的例子。

例子#1

在这个例子中,我们使用一个列表缓冲区创建一个可变的列表,并打印它的所有元素。

代码。

import scala.collection.mutable.ListBuffer
object Main extends App{
// Your code here!
val list1 = new ListBuffer[Int] list1 += 10
list1 += 20
list1 += 30
println("values inside list is  ::")
println(list1)
}

输出。

Scala Mutable List output 1

例子 #2

在这个例子中,我们使用 scala 中的 -= 方法从可变列表中删除元素。

代码。

import scala.collection.mutable.ListBuffer
object Main extends App{
// Your code here!
val list1 = new ListBuffer[Int] list1 += 10
list1 += 20
list1 += 30
println("values inside list before  ::")
println(list1)
list1 -= 30
println("values inside list after  ::")
println(list1)
}

输出。

Scala Mutable List output 2

例子 #3

在这个例子中,我们通过使用 size 方法来计算列表中的元素。

代码。

object Main extends App{
// Your code here!
val list1 = new ListBuffer[Int] list1 += 10
list1 += 20
list1 += 30
println("values inside list before  ::")
println(list1)
list1 -= 30
var size = list1.size
println("values inside list after  ::")
println(list1)
println("size of the list is ::")
println(size)
}

输出。

Scala Mutable List output 3

例子 #4

在这个例子中,我们通过使用scala集合中的indexOf方法来获得可变列表中的元素的索引。

代码。

import scala.collection.mutable.ListBuffer
object Main extends App{
// Your code here!
val list1 = new ListBuffer[Int] list1 += 10
list1 += 20
list1 += 30
println("values inside list before  ::")
println(list1)
list1 -= 30
var index = list1.indexOf(10)
println("values inside list after  ::")
println(list1)
println("index of the list is ::")
println(index)
}

输出。

output 4

例子 #5

在这个例子中,我们通过使用scala集合中的head方法来获得列表的头部。

代码。

import scala.collection.mutable.ListBuffer
object Main extends App{
// Your code here!
val list1 = new ListBuffer[Int] list1 += 10
list1 += 20
list1 += 30
list1 += 50
list1 += 40
list1 += 60
println("values inside list before  ::")
println(list1)
list1 -= 30
var head = list1.head
println("values inside list after  ::")
println(list1)
println("head of the list is ::")
println(head)
}

输出。

output 5

例子 #6

在这个例子中,我们正在检索可变列表中的最后一个元素。为此,我们使用了last方法,该方法是可用的,而且是集合的一部分。

代码。

import scala.collection.mutable.ListBuffer
object Main extends App{
// Your code here!
//creating mutable list
val list1 = new ListBuffer[Int] list1 += 10
list1 += 20
list1 += 30
println("values inside list before  ::")
println(list1)
list1 -= 30
var last = list1.last
//printing output after operations
println("values inside list after  ::")
println(list1)
println("last of the list is ::")
println(last)
}

输出。

output 6

结论

Scala为我们提供了各种类来创建可变列表。 它们都只是集合的一部分。但它们使用不同的数据结构来实现可变的概念。我们有list =buffer、linked List、Doubly Linked List等等。 此外,他们还提出了各种方法来创建和操作列表元素。 我们还可以通过使用toList方法将易变的列表转换为不可变的列表。

推荐文章

这是一篇关于Scala Mutable List的指南。在这里,我们讨论了Scala中的Mutable List是如何工作的,以及代码和输出的例子。你也可以看看下面的文章,以了解更多信息。

  1. Scala Try Catch
  2. Scala抽象类
  3. Scala数据类型
  4. Scala版本