更新时间:2020-03-24 13:37:49 来源:极悦 浏览2281次
栈:这是一个先进后出的数据结构,生活中类似的浏览器的返回上一页就可以利用此结构实现,代码如下:
publicclassStack<T>{ privateObject[]data;//存储数据 privateinttop;//表示栈顶元素 publicStack(){ data=newObject[100];//为了说明原理随意指定 top=-1; } publicsynchronizedvoidput(Tt){//压栈 data[data.length]=t; top++; } publicsynchronizedTpop(){//出栈 if(top<0){ returnnull; } Tt=(T)data[top]; top--; returnt; } }
这只是我自己的Java实现只说明原理,但实际在java中是利用vector来存储数据的,我们知道vector其实是一个线程安全的ArrayList,而ArrayList的底层也是一个数组,所以原理上大同小异
队列:队列其实就是我们生活中的排队现象,先进入的先出,后进入的后出,代码实现如下:
publicclassQueue<T>{ privateObject[]data;//存储数据 privateinthead;//头 privateinttail;//尾 publicQueue(){ data=newObject[100];//为了说明原理随意指定 head=1; tail=1; } publicvoidput(Tt){ data[tail]=t; tail++; } publicTget(){ Tt=(T)data[head]; head++; returnt; } }
如上所示,也只是说明原理,其实在javajdk中也有许多不同的对列,并且对列可以由数组实现,也可以由链表实现,下面介绍链表
链表是一个类似于现实中串项链的数据结构,前一个数据指向后一个数据,当然也可以后一个数据指向前一个数据,这就是双向链表,这里不做讨论
publicclassMyNode<T>{ privateNode<T>headNode; publicMyNode(Tt){ headNode=newNode<>(t,null); } publicMyNode(){ } privatestaticclassNode<E>{ Objecte; Node<E>next; Node(Eelement,Node<E>next){ this.e=element; this.next=next; } } publicvoidput(Tt){ if(headNode==null){ headNode=newNode<>(t,null); }else{ headNode=newNode<>(t,headNode); } } publicTget(intindex){ Nodenode=headNode; for(inti=2;i<index;i++){ node=node.next; } Tt=(T)node.e; returnt; } }
以上就是用Java实现的简单链表,还有双向链表是一个元素指向前一个元素和后一个元素,原理大概相同,这里可以看书链表中取固定位置的数据是非常麻烦的,必须从第一个开始依次查找,这也就是linklist不用for(inti=0;i++;i<size())遍历的原因,因为linklist的底层就是通过链表来实现的
以上就是极悦注册机构小编介绍的“Java基础学习:Java实现队列”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习