队列是一种先进先出(FIFO)的数据结构。队列只能在队首删除元素,从队尾插入元素,这点和栈不太一样。
-
就像我们在开发过程中,为了让任务可以并行处理,通常会开启多个线程;
-
但是我们不能让多个线程同时运行处理任务去占用过多的资源;
-
这个时候,如果有需要开启线程处理任务的情况,我们就会使用线程队列;
-
线程队列会依照次序来启动线程,并且处理对应的任务。
队列具有以下常见的常规操作:
-
enterQueue(element) : 添加一个元素到队列尾部,入队;
-
deleteQueue(): 移除队列首部元素,同时返回被移除的元素,出队;
-
front(): 返回队列首部元素,这个方法不会移除队列首部元素,仅仅会返回它;
-
isEmpty(): 是否为空
-
size(): 返回队列的长度;
-
toString(): 将队列结构的内容以字符的形式返回。
用 JavaScript 具体实现如下代码:
class Queue {
constructor() {
this.items = [];
}
enterQueue(element) {
this.items.push(element);
}
deleteQueue() {
if (this.isEmpty()) {
throw new Error('队列为空');
}
return this.items.shift();
}
front() {
return this.items[0];
}
isEmpty() {
return this.items.length === 0;
}
size() {
return this.items.length;
}
toString() {
let str = '';
for (let index = 0; index < this.items.length; index++) {
str += `${this.items[index]} `;
}
return str;
}
}
const queue = new Queue();
queue.enterQueue(1);
queue.enterQueue(2);
queue.enterQueue(3);
queue.toString();
alert(queue.size());
queue.deleteQueue();
alert(queue);
alert(queue.size());
alert(queue.isEmpty());
alert(queue.front());