专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java基础学习:Java实现队列

Java基础学习:Java实现队列

更新时间:2020-03-24 13:37:49 来源:动力节点 浏览2146次


Java基础学习:Java实现队列


  栈:这是一个先进后出的数据结构,生活中类似的浏览器的返回上一页就可以利用此结构实现,代码如下:

  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实现队列


    以上就是动力节点Java培训机构小编介绍的“Java基础学习:Java实现队列”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>