科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件如何编写一个JAVA的队列类?

如何编写一个JAVA的队列类?

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

队列是设计程序中常用的一种数据结构。它类似日常生活中的排队现象,采用一种被称为“先进先出”(LIFO)的存储结构。数据元素只能从队尾进入,从队首取出。

作者:梁颖健 来源:PConline  2007年9月3日

关键字: java 队列类

  • 评论
  • 分享微博
  • 分享邮件

队列是设计程序中常用的一种数据结构。它类似日常生活中的排队现象,采用一种被称为“先进先出”(LIFO)的存储结构。数据元素只能从队尾进入,从队首取出。在队列中,数据元素可以任意增减,但数据元素的次序不会改变。每当有数据元素从队列中被取出,后面的数据元素依次向前移动一位。所以,任何时候从队列中读到的都是队首的数据。

根据这些特点,对队列定义了以下六种操作:

enq(x) 向队列插入一个值为x的元素;

deq() 从队列删除一个元素;

front() 从队列中读一个元素,但队列保持不变;

empty() 判断队列是否为空,空则返回真;

clear() 清空队列;

search(x) 查找距队首最近的元素的位置,若不存在,返回-1。

 

Vector类是JAVA中专门负责处理对象元素有序存储和任意增删的类,因此,用Vector可以快速实现JAVA的队列类。

public class Queue extends java.util.Vector {

public Queue() {

super();

}

public synchronized void enq(Object x) {

super.addElement(x);

}

public synchronized Object deq() {

/* 队列若为空,引发EmptyQueueException异常 */

if( this.empty() )

throw new EmptyQueueException();

Object x = super.elementAt(0);

super.removeElementAt(0);

return x;

}

public synchronized Object front() {

if( this.empty() )

throw new EmptyQueueException();

return super.elementAt(0);

}

public boolean empty() {

return super.isEmpty();

}

public synchronized void clear() {

super.removeAllElements();

}

public int search(Object x) {

return super.indexOf(x);

}

}

public class EmptyQueueException extends java.lang.RuntimeException {

public EmptyQueueException() {

super();

}

}

以上程序在JDK1.1.5下编译通过。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章