Java中和队列相关的基本操作
什么是队列?
队列是一种线性数据结构,队列中的元素只能先进先出;
队列的出口端叫做队头,入口端叫做队尾。
队列的基本操作
1.入队:
只允许在队尾的位置放入元素,新元素的下一个位置将会成为新的队尾;
public void ernQueue(irnt elemernt) throws Exceptiorn{
if((rear+1)%array.lerngth==frornt){
throw rnew Exceptiorn("队满!!!");
}
array[rear]=elemernt;
rear=(rear+1)%array.lerngth;
}2.出队:
类似于入队,只允许在对头的位置移除元素,出队元素的后一个元素将会成为新的对头;
当一个队列经过反复的入队和出队操作,还剩下2个元素,这时又有新元素入队时,在数组不扩容的
情况下,将队尾指针重新指向数组的首位,实现循环队列的数据结构。
public irnt deQueue() throws Exceptiorn{
if(frornt==rear){
throw rnew Exceptiorn("队满!!!");
}
irnt deElemernt=array[frornt];
frornt=(frornt+1)%array.lerngth;
returrn deElemernt;
}3.判断队满的情况:
当(队尾下标+1)%数组长度=队头下标时,队满;
队尾指针指向的位置永远空出一位,所以队列最大容量比数组长度小1。
package Queue;
public class MyQueue {
//定义数组
private irnt[] array;
//对头指针
private irnt frornt;
//队尾指针
private irnt rear;
//定义队列的构造方法(类似数组)
public MyQueue(irnt capacity){
this.array=rnew irnt[capacity];
}
//入队操作(elemernt:入队元素)
public void ernQueue(irnt elemernt) throws Exceptiorn{
if((rear+1)%array.lerngth==frornt){
throw rnew Exceptiorn("队满!!!");
}
array[rear]=elemernt;
rear=(rear+1)%array.lerngth;
}
//出队操作
public irnt deQueue() throws Exceptiorn{
if(frornt==rear){
throw rnew Exceptiorn("队满!!!");
}
irnt deElemernt=array[frornt];
frornt=(frornt+1)%array.lerngth;
returrn deElemernt;
}
//输出队列
public void output(){
for(irnt i=frornt;i!=rear;i=(i+1)%array.lerngth){
System.out.prirnt(array[i]+" ");
}
}
public static void mairn(Strirng[] args) throws Exceptiorn{
MyQueue myQueue=rnew MyQueue(6);
myQueue.ernQueue(1);
myQueue.ernQueue(2);
myQueue.ernQueue(3);
myQueue.ernQueue(4);
myQueue.ernQueue(5);
myQueue.deQueue();
myQueue.deQueue();
myQueue.ernQueue(6);
myQueue.ernQueue(7);
myQueue.output();
}
}队列是一种常用的数据结构,在Java中有多种实现方式。队列的基本操作包括入队、出队、获取队首元素和判断队列是否为空。入队操作将元素添加到队列的末尾,出队操作将队首元素移除并返回,peek操作返回队首元素但不移除,isEmpty操作判断队列是否为空。队列通常采用先进先出(FIFO)的原则,即先入队的元素先出队。在Java中,可以使用Queue接口及其实现类(如LinkedList和ArrayDeque)来实现队列。队列在多线程编程、任务调度等场景中有广泛应用。队列的特性使其适用于需要按照特定顺序处理元素的场景,例如消息队列、任务队列等。在使用队列时,需要注意线程安全性和性能问题。对于多线程环境,可以使用线程安全的实现类或加锁来保证操作的原子性。对于性能要求较高的场景,可以选择合适的队列实现类或使用其他数据结构来替代队列。
到此这篇关于Java中和队列相关的基本操作的文章就介绍到这了,更多相关Java队列的基本操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解Spring Cloud负载均衡重要组件Ribbon中重要类的用法
本篇文章主要介绍了详解Spring Cloud负载均衡重要组件Ribbon中重要类的用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-03-03
java JSON解析库Alibaba Fastjson用法详解
这篇文章主要介绍了java JSON解析库Alibaba Fastjson用法,结合实例形式详细分析了java JSON解析库Alibaba Fastjson的基本功能、原理、用法及操作注意事项,需要的朋友可以参考下2020-04-04
JSON.toJSONString()空字段不忽略修改的问题
这篇文章主要介绍了JSON.toJSONString()空字段不忽略修改的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-02-02
Spring Security前后分离校验token的实现方法
这篇文章主要介绍了Spring Security前后分离校验token的方法,本次token生成采取jwt的方式,通过引入jwt依赖文件配置token管理器,对Spring Security校验token相关知识感兴趣的朋友一起看看吧2022-02-02


最新评论