用LinkedList模拟队列(Java容器)
2012-06-27 23:06
330 查看
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列具有先进先出(FIFO)的特点,也就是在执行删除操作时先删除最早插入的成员。学过数据结构的同学应该对队列这个数据结构的性质相当熟悉了,下面的代码利用LinkedList模拟队列这种数据结构。
代码如下:
运行结果如下:
这段程序中类MockQueue用于模拟队列,其offer方法可以实现将对象插入到队列的队尾,而peek和element方法用于查看队列头部的成员,poll和remove方法则是从队首移除成员,main方法中新建了一个Mockqueue对象,并按顺序插入三个字符串,然后循环地将成员从队尾移除,从程序打印结果可以开去,最早插入的是Shandong最先被移除,最迟插入的StephLi最后被移除,类MockQueue完成符合队列数据结构的定义。
程序中用到的LinkedList的方法如下:
参数:无
功能:找到并移除此列表的头(第一个元素)
参数:无
功能:找到并移除此列表的头(第一个元素)
参数:0 为待插入的对象
功能:将指定的元素添加到此表的末尾(最后一个元素);
参数:无
功能:找到但不移除此表的头(第一个元素),如果此队列为空,则返回null
参数:无
功能:找到但不移除此表的头(第一个元素),如果此队列为空,则抛出NoSuchElementException 异常
参数:无
功能:如果此collection不包含元素,则返回true,否则返回false;
代码如下:
package Stephen.Classchapter9; import java.util.LinkedList; //用LinkedList模拟 public class MockQueue { public LinkedList list = new LinkedList(); //将指定的元素插入队尾 public void offer(Object v){ list.offer(v); } //检索,但是不移除队列的头,如果此队列为空,则返回null public Object peek(){ return list.peek(); } //检索,但是不移除此队列的头 //此方法与peek方法的唯一不同是,如果此队列为空,他会抛出一个异常 public Object element(){ return list.element(); } //检索并移除此队列的头,如果队列为空,则返回null public Object poll(){ return list.poll(); } //检索并移除此队列的头,此方法与poll方法的不同在于,如果此队列为空,他会抛出一个异常 public Object remove(){ return list.remove(); } //队列是否为空 public boolean isEmpty(){ return list.isEmpty(); } //打印队列元素 public String toString(){ return list.toString(); } public static void main(String[] args){ MockQueue queue = new MockQueue(); //下面的语句使用类LinkedList实现的堆栈的用法 queue.offer("Shandong"); queue.offer("University Of Technology"); queue.offer("StephenLi"); while (!queue.isEmpty()){ System.out.println("将要队尾移除的成员是" + queue.peek()); queue.poll(); System.out.println("当前中剩余成员为 :" + queue); } } }
运行结果如下:
这段程序中类MockQueue用于模拟队列,其offer方法可以实现将对象插入到队列的队尾,而peek和element方法用于查看队列头部的成员,poll和remove方法则是从队首移除成员,main方法中新建了一个Mockqueue对象,并按顺序插入三个字符串,然后循环地将成员从队尾移除,从程序打印结果可以开去,最早插入的是Shandong最先被移除,最迟插入的StephLi最后被移除,类MockQueue完成符合队列数据结构的定义。
程序中用到的LinkedList的方法如下:
public Object poll()
参数:无
功能:找到并移除此列表的头(第一个元素)
public Object remove()
参数:无
功能:找到并移除此列表的头(第一个元素)
public boolean offer(Object 0)
参数:0 为待插入的对象
功能:将指定的元素添加到此表的末尾(最后一个元素);
public Object peek()
参数:无
功能:找到但不移除此表的头(第一个元素),如果此队列为空,则返回null
public Object element()
参数:无
功能:找到但不移除此表的头(第一个元素),如果此队列为空,则抛出NoSuchElementException 异常
public boolean isEmpty()
参数:无
功能:如果此collection不包含元素,则返回true,否则返回false;
相关文章推荐
- Java使用LinkedList模拟一个堆栈或者队列数据结构
- java:队列模拟(自定义链表结构 +LinkedList )
- Java基础课程学习总结,使用LinkedList简单模拟队列数据结构和堆栈数据结构的实现
- JAVA容器-模拟LinkedList实现(双链表)
- java 使用LinkedList模拟一个堆栈或者队列数据结构
- Java使用LinkedList模拟一个堆栈或者队列数据结构。
- Java LinkedList特有方法程序小解 && 使用LinkedList 模拟一个堆栈或者队列数据结构。
- java 使用LinkedList模拟一个堆栈或者队列数据结构
- java小练习-使用LinkedList模拟一个堆栈或队列数据结构
- 【Java学习】使用LinkedList 模拟一个堆栈或者队列数据结构
- 解析Java中的队列和用LinkedList集合模拟队列的方法
- 《黑马程序员》 LinkedList之堆栈和队列功能的模拟
- 使用LinkedList来模拟堆栈或队列数据结构
- LinkedList学习示例模拟堆栈与队列数据结构
- 集合框架---使用LinkedList模拟一个堆栈或者队列数据结构
- 使用java.util.LinkedList模拟实现内存页面置换算法--LRU算法
- [疯狂Java]集合:Deque(双端队列)以及两个实现(ArrayDeque、LinkedList)、Stack(摒弃)、各线性表性能分析
- Java 容器 & 泛型(2):ArrayList 、LinkedList和Vector比较
- java中LinkedList 集合类实现栈和队列
- Java并发容器之非阻塞队列ConcurrentLinkedQueue