用java实现一个简单队列

简介: 本文demo基于数组实现,主要用来帮助理解队列先进先出的特点

本文demo基于数组实现,主要用来帮助理解队列先进先出的特点

public class MyArrayQueue {
    //声明一个数组,int、Integer都行,这里用Integer是因为不想看到int的默认值0
    private Integer[] arr;
    //声明一个变量index来记录当前下标
    private int index = 0;
    public MyArrayQueue(Integer size) {
        //实例化数组时的容量
        this.arr = new Integer[size];
    }
    public MyArrayQueue() {
        //没有指定容量的话默认为5
        this.arr = new Integer[5];
    }
    //放入元素
    public void add(int p) {
        arr[index++] = p;
    }
    //取出头部元素
    public int get() {
        return arr[0];
    }
    //取出头部元素并删除
    public int getAndRemove() {
        int res = this.arr[0];
        //将数组元素往前平移
        for (int i = 1; i < this.arr.length; i++) {
            arr[i - 1] = arr[i];
        }
        //记得下标-1
        index--;
        return res;
    }
    //打印当前数组
    public void switchArr() {
        for (int i = 0; i < this.arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}

测试:

    public void myQueueTest(){
        MyArrayQueue queue = new MyArrayQueue(8);
        queue.add(1);
        queue.add(3);
        queue.add(5);
        queue.add(7);
        queue.add(9);
        System.out.println(queue.getAndRemove());//取出头部元素并删除,应该返回1
        System.out.println(queue.get());//这次应该返回3,因为1已经被删除了
        queue.switchArr();//再来看看当前数组内元素
    }

结果:

1

3

3 5 7 9 null null null null

打完收工

相关文章
|
1月前
|
前端开发 Java
java中的Queue队列的用法
java中的Queue队列的用法
19 1
|
1月前
|
存储 安全 算法
解读 Java 并发队列 BlockingQueue
解读 Java 并发队列 BlockingQueue
20 0
|
3月前
|
Java
队列(JAVA)
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的性质。
21 0
|
4月前
|
Java
225. 用队列实现栈 --力扣 --JAVA
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。 int pop() 移除并返回栈顶元素。 int top() 返回栈顶元素。 boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。
45 1
|
6月前
|
存储 消息中间件 缓存
Java数据结构第三讲-栈/队列
Java数据结构第三讲-栈/队列
|
2月前
|
存储 安全 Java
JAVA常用队列类
JAVA常用队列类
|
6月前
|
存储 Java 调度
Java 最常见的面试题:队列和栈是什么?有什么区别?
Java 最常见的面试题:队列和栈是什么?有什么区别?
|
3月前
|
C++ Java Go
Java每日一练(20230428) 搜索旋转排序数组、栈实现队列、平方根
Java每日一练(20230428) 搜索旋转排序数组、栈实现队列、平方根
45 0
Java每日一练(20230428) 搜索旋转排序数组、栈实现队列、平方根
|
3月前
|
Java
JAVA AQS 抽象队列同步器
在 AQS(AbstractQueuedSynchronizer)中,可以通过一些机制来实现共享锁。AQS是Java并发包中的一个基础框架,它提供了一种用于构建锁和同步器的工具。
|
3月前
|
算法 Java C++
Java Review - 并发编程_抽象同步队列AQS
Java Review - 并发编程_抽象同步队列AQS
27 0