代码示例:

package com.dt.scala.dataset
import scala.collection.immutable.Queue
object ListBuffer_ArrayBuffer_Queue_Stack {
  def main(args: Array[String]): Unit = {
    // List 是不可变的,一旦声明,并不能修改变量引用的List的内容
    //scala 提供了ListBuffer 可变列表
    import scala.collection.mutable.ListBuffer
    val lb = new ListBuffer[Int]() 
    lb += 1
    lb +=2
    // 请注意,我们将lb定义成常量,lb +=1 并不是改变lb的值,而是改变lb指向的列表的值
    println(lb) //ListBuffer(1, 2)
    
    // Array 同样也是不可变数组,ArrayBuffer是可变数组
    import scala.collection.mutable.ArrayBuffer
    val ab = new ArrayBuffer[Int]()
    ab.+=(1)
    ab += 2 
    println(ab) //ArrayBuffer(1, 2)
    
    //Queue 是一个对象
    val queue = Queue[Int]()
    // 向队列中插入数据
    queue.enqueue(1)
    //此时queue仍然为空,因为Queue是不可变集合
    println(queue) //Queue()
    
    val queue1 = queue.enqueue(1)
    
    //我们看看可变Queue
    import scala.collection.mutable.Queue
    val queue2 = Queue[Int]()
    queue2.enqueue(1)
    println(queue2) //Queue(1)
    queue2.enqueue(2)
    queue2.enqueue(3) //Queue(1,2, 3)
    //Queue 是先进先出
    println(queue2.dequeue()) //1
    println(queue2) //Queue(2, 3)
    
    import scala.collection.mutable.Stack
    
    val stack = Stack[Int]()
    stack.push(1)
    //一次放入多个元素
    stack.push(2, 3, 4)
    println(stack) //Stack(4, 3, 2, 1)
    
    println(stack.top) // top 函数取堆中的最上面的值,但是并不从堆中删除数据
    println(stack) //Stack(4, 3, 2, 1)
    println(stack.pop()) // 从堆中取出最上面数据
    println(stack) //Stack(3, 2, 1)   
    
  }
}