文档章节

自定义Queue

拿客-三产
 拿客-三产
发布于 2017/03/24 15:06
字数 294
阅读 36
收藏 0

原文地址

Queue(队列)是一种特殊类型的集合,旨在使用先进先出方式处理和排序之前保存元素。

下面使用 Array 实现 Queue,并提供诸如enqueue(obj),dequeue()和isEmpty()等基本功能。

/**
 * <p></p>
 *
 * @author 三产
 * @version 1.0
 * @date 2017-03-24
 * @QQGroup 213732117
 * @website http://www.coderknock.com
 * @copyright Copyright 2017 拿客 coderknock.com  All rights reserved.
 * @since JDK 1.8
 */
public class MyQueue {
    
        //CONSTRUCTION: with no initializer
        //
        // ******************PUBLIC OPERATIONS*********************
        // void enqueue( obj )      --> Insert obj
        // Object dequeue( )      --> Return and remove least recent item
        // boolean isEmpty( )     --> Return true if empty; else false

        public static final int DEFAULT_SIZE=5;

        private Object data[];

        private int index;

        public MyQueue(){
            data=new Object[DEFAULT_SIZE];
        }

        public boolean isEmpty(){
            return index==0;
        }

        public void enqueue(Object obj) throws Exception{
            if(index==DEFAULT_SIZE-1){
                throw new Exception("Queue is full. Dequeue some objects");
            }
            this.data[index]=obj;
            this.index++;
        }

        public Object dequeue() throws Exception{
            if(isEmpty())throw new Exception("Queue is empty");
            Object obj=this.data[0];
            for(int i =0; i<this.index-1; i++){
                data[i]=data[i+1];
            }
            this.index--;
            return obj;

        }

        public static void main(String[] args) throws Exception {

            MyQueue queue = new MyQueue();
            queue.enqueue("1");
            System.out.println(queue.dequeue());

            queue.enqueue("2");
            queue.enqueue("3");
            queue.enqueue("4");
            System.out.println(queue.dequeue());

            queue.enqueue("5");
            queue.enqueue("6");
            System.out.println(queue.dequeue());
            queue.enqueue("7");

            /**
             * 这里是队列超出默认大小的时候会抛出的异常
             * Exception in thread "main" java.lang.Exception: Queue is full. Dequeue some objects
             * at MyQueue.enqueue(MyQueue.java:37)
             * at MyQueue.main(MyQueue.java:69)
             */
            
            queue.enqueue("8");
            System.out.println(queue.dequeue());
        }

}

© 著作权归作者所有

拿客-三产
粉丝 110
博文 76
码字总数 122526
作品 0
丰台
程序员
私信 提问
nginx代码分析-基本结构-queue

nginx自定义了双向循环队列数据结构, 顺带复习下这个经典的数据结构 <core/nginxqueque.h> 定义了基本的, 思想与linux内核定义的list类似, 都是在自定义结构体中包含ngxqueuet指针, 利用其在...

beyondtime
2013/11/07
399
0
IOS多线程之GCD

ios多线程之GCD 同步任务 dispatchsync(dispatchgetmainqueue(), ^{});同步任务:dispatch_sync,会阻塞后面的任务,必需当前任务完成后才能执行下一个。 异步任务 dispatchasync(dispatchge...

zhenghaoLi
2016/09/03
16
0
GCD的一些简单总结

GCD,Grand Central Dispatch,是Apple开发的一个多核编程的解决方法。 GCD其实就是创建/获取一个队列,在 Block 块或方法(函数)里写需要执行的任务代码块,然后将任务放到合适的队列里执行...

toowhite
2017/11/21
0
0
使用Thread异步开启单个任务,适用于开启后就不用再管的任务

使用这个技能时,有2个办法, 1 使用Thread类实例化对象,然后调用它的start()方法, 2 自定义类,继承自Thread类,然后重写run()方法,然后再实例化我们自定义的类,并且调用它的start()方法...

kyonon
2017/09/14
0
0
Mule ESB File Connector轮询单个文件的实现(3)

本系列的(1)和(2)介绍了如何修改File Connector的轮询机制,使得File Connector每次轮询只轮询一个文件。本文主要阐述如何对前面的实现做进一步的修改,这个修改有以下两点: 1)如何自定义定义...

杨延庆
2016/08/08
109
2

没有更多内容

加载失败,请刷新页面

加载更多

Git

指令 git init :创建版本库,生成.git文件夹 git add XX:上传代码到暂存区 git state:查看目前本地工作起、暂存区、分支,三者之间的文件状态 git diff demo.html:查看工作区和暂存区的代码...

Hui先生
38分钟前
6
0
绘制流程图用什么软件好?分享绘制流程图的简单方法

绘制流程图一般有两种方法,一种是手绘,另一种是利用画图工具进行绘制,更多的人们选择使用第二种方法进行绘制,方便简单。那绘制流程图用什么软件好?若是使用电脑进行绘制,可以选择迅捷画...

百因必有果
40分钟前
8
0
PHP制作的掷色子点数抽奖游戏实例

PHP制作的掷色子点数抽奖游戏实例,通过掷色子点数来达到抽奖的效果,为抽奖活动增添一些趣味性。 我们将在html页面中写下如下的html结构代码,.wrap用来放置色子和提示信息,#prize则是用来...

ymkjs1990
53分钟前
5
0
宝塔免费版部署

宝塔免费版部署 NiuSHOP安装环境及宝塔一键部署免费版 1、Niushop安装环境 操作系统:支持Windows和linux 服务器:支持Apache/Nginx/IIS服务器 PHP5.6版本及以上,最高支持PHP7.2,MySQL版本...

Geek-Chic
今天
5
0
MySQL查询优化临时表

【理论分析】 MySQL在执行SQL查询时可能会用到临时表,一般情况下,用到临时表就意味着性能较低。 临时表存储 MySQL临时表分为“内存临时表”和“磁盘临时表”,其中内存临时表使用MySQL的M...

1只特立独行的猪
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部