队列(Queue)
受限之处在于他只允许在表的前端(front)进行删除操作
而在表的后端(rear)进行插入操作
生活中类似的队列
比电影院、商场、厕所排队
优先排队的人,优先处理
线程队列
在开发中,为了让任务可以并行处理,通常会开启多个线程,但是,我们不能让大量的线程同时运行处理任务,(占用过多的资源),这个时候,如果有需要开启线程处理任务的情况,我们就会使用线程队列。线程队列会依照次序开启动线程,并且处理对应的任务
队列类的封装(基于数组)
enqueue(element):向队列尾部添加一个(或多个)新的项。
dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移除的元素
front():返回队列中第一个元素----最先被添加,也就是最先被一处的元素。队列不做任何变动(不移除元素,只返回元素信息-----与Stack类的方法非常类似)
isEmpty():如果队列不包含任何元素,返回true,否则返回false
size():返回队列包含的元素个数,与数组的length属性类似
toString():将队列中的内容,装成字符串形式
// 封装队列类
class Queue {
constructor() {
// 初始化队列
this.items = [];
}
// 1.将元素添加到队列中
enqueue(element) {
this.items.push(element);
}
// 2.从队列中删除元素
dequeue() {
return this.items.shift();
}
// 3.返回队列中的第一个元素
front() {
return this.items[0];
}
// 4.返回队列中元素的个数
size() {
return this.items.length;
}
// 5.判断队列是否为空
isEmpty() {
return this.items.length === 0;
}
// 6.toString方法
toString() {
let str = ''
this.items.forEach(item => {
str += item
})
return str
}
}