队列的说明

  1. 队列是一个有序的列表,在底层可以用数组或是链表来实现
  2. 其输入和输出要遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出
  3. 在Scala中,由设计者直接给我们提供队列类型使用
  4. 在Scala中,有 scala.collection.mutable.QueueScala.collection.immutable.Queue 一般来说我们在开发中使用可变集合中的队列

Queue的创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
object QueueDemo {
def main(args: Array[String]): Unit = {
// 初始化
val myqueue = new mutable.Queue[Int]
println(myqueue)

//向队列中追加单个元素和list
//我们可以使用 += 或者 ++=集合对象 +=可以添加单个的元素,++=可以把一个集合中的元素添加进来
//+= 一个集合对象 不是把集合中的内容放入队列中,而是直接把这个对象放入其中,但是我们可以通过将queue的泛型类型定义为Any来使用+=将一个对象加入到队列中,此时该对象将作为一个元素添加到队列中
myqueue += 1
myqueue ++= mutable.ListBuffer[Int](1, 23, 4)
println(myqueue)
}
}

队列元素的增删

按照进入队列的顺序删除元素(队列先进先出)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
object QueueDemo {
def main(args: Array[String]): Unit = {
// 初始化
val myqueue = new mutable.Queue[Int]
println(myqueue)

//向队列中追加单个元素和list
//我们可以使用 += 或者 ++=集合对象 +=可以添加单个的元素,++=可以把一个集合中的元素添加进来
//+= 一个集合对象 不是把集合中的内容放入队列中,而是直接把这个对象放入其中,但是我们可以通过将queue的泛型类型定义为Any来使用+=将一个对象加入到队列中,此时该对象将作为一个元素添加到队列中
myqueue += 1
myqueue ++= mutable.ListBuffer[Int](1, 23, 4)
println(myqueue)
println("------------------------")
// 队列的增删 使用 dequeue()方法
println("删除的元素为:" + myqueue.dequeue() + "删除后的队列" + myqueue)
println("------------------------")
// 队列的新增
println("新增前队列的元素" + myqueue + "新增后队列的元素" + myqueue.enqueue(99, 100, 99, 101))
}
}

在队列中严格遵守入队列的数据放在队尾,出队列的数据是从队列的头部开始选取的

返回队列的元素

返回队列的第一个元素

1

返回队列的最后一个元素

1

返回队列的尾部(即:返回除了第一个以外剩余的元素,可以级联使用,这个在递归时使用较多)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
object QueueDemo {
def main(args: Array[String]): Unit = {
// 初始化
val myqueue = new mutable.Queue[Int]
println(myqueue)

//向队列中追加单个元素和list
//我们可以使用 += 或者 ++=集合对象 +=可以添加单个的元素,++=可以把一个集合中的元素添加进来
//+= 一个集合对象 不是把集合中的内容放入队列中,而是直接把这个对象放入其中,但是我们可以通过将queue的泛型类型定义为Any来使用+=将一个对象加入到队列中,此时该对象将作为一个元素添加到队列中
myqueue += 1
myqueue ++= mutable.ListBuffer[Int](1, 23, 4)
println(myqueue)
println("------------------------")
// 队列的增删 使用 dequeue()方法
println("删除的元素为:" + myqueue.dequeue() + "删除后的队列" + myqueue)
println("------------------------")
// 队列的新增
println("新增前队列的元素" + myqueue + "新增后队列的元素" + myqueue.enqueue(99, 100, 99, 101))
println("=======================")
// 返回队列的第一个元素
println("队列的第一个元素为=" + myqueue.head)

// 返回队列的最后一个元素
println("队列的最后一个元素为=" + myqueue.last)
// 返回队列的尾部(即:返回除了第一个以外剩余的元素,可以级联使用,这个在递归时使用较多)
// 返回队列的尾部
println(myqueue.tail)
// 返回队列的尾部,递归再次调用
println(myqueue.tail.tail)
}
}