
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 ...)
在上面的语法中,我们可以通过两种方式创建一个易变的列表。
-
第一种方法是创建一个空的易变列表,并提到其数据类型。
-
第二种方法是同时创建和初始化该列表。
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)
}
输出。

例子 #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)
}
输出。

例子 #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)
}
输出。

例子 #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)
}
输出。

例子 #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)
}
输出。

例子 #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)
}
输出。

结论
Scala为我们提供了各种类来创建可变列表。 它们都只是集合的一部分。但它们使用不同的数据结构来实现可变的概念。我们有list =buffer、linked List、Doubly Linked List等等。 此外,他们还提出了各种方法来创建和操作列表元素。 我们还可以通过使用toList方法将易变的列表转换为不可变的列表。
推荐文章
这是一篇关于Scala Mutable List的指南。在这里,我们讨论了Scala中的Mutable List是如何工作的,以及代码和输出的例子。你也可以看看下面的文章,以了解更多信息。