用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

打完收工

相关文章
|
12天前
|
存储 监控 Java
JAVA线程池有哪些队列? 以及它们的适用场景案例
不同的线程池队列有着各自的特点和适用场景,在实际使用线程池时,需要根据具体的业务需求、系统资源状况以及对任务执行顺序、响应时间等方面的要求,合理选择相应的队列来构建线程池,以实现高效的任务处理。
90 12
|
8月前
|
算法 Java
Java数据结构——队列
Java数据结构——队列
57 4
|
3月前
|
存储 安全 Java
【用Java学习数据结构系列】探索栈和队列的无尽秘密
【用Java学习数据结构系列】探索栈和队列的无尽秘密
42 2
|
4月前
|
Java API 容器
JAVA并发编程系列(10)Condition条件队列-并发协作者
本文通过一线大厂面试真题,模拟消费者-生产者的场景,通过简洁的代码演示,帮助读者快速理解并复用。文章还详细解释了Condition与Object.wait()、notify()的区别,并探讨了Condition的核心原理及其实现机制。
|
3月前
|
存储 算法 Java
【用Java学习数据结构系列】用堆实现优先级队列
【用Java学习数据结构系列】用堆实现优先级队列
47 0
|
5月前
|
Java
java中的队列
这篇文章通过Java代码示例介绍了使用数组实现队列操作,包括队列的初始化、入队、出队、判断队列满和空以及遍历队列的方法。
java中的队列
|
6月前
|
设计模式 安全 Java
Java面试题:请解释Java中的线程池以及为什么要使用线程池?请解释Java中的内存模型以及如何避免内存泄漏?请解释Java中的并发工具包以及如何实现一个简单的线程安全队列?
Java面试题:请解释Java中的线程池以及为什么要使用线程池?请解释Java中的内存模型以及如何避免内存泄漏?请解释Java中的并发工具包以及如何实现一个简单的线程安全队列?
55 1
|
7月前
|
Java 开发者
揭秘!LinkedList是如何华丽变身成为Java队列之王的?
【6月更文挑战第18天】Java的`LinkedList`既是列表也是队列之星,实现`Queue`接口,支持FIFO操作。其内部的双向链表结构确保了添加/移除元素的高效性(O(1)),适合作为队列使用。它线程不安全,但可通过同步包装用于多线程环境。此外,`LinkedList`还能灵活变身栈或双端队列,提供多种数据结构功能。
72 11
|
7月前
|
Java
2023蓝桥杯大赛软件类省赛Java大学B组G题 买二增一 队列的简单应用
2023蓝桥杯大赛软件类省赛Java大学B组G题 买二增一 队列的简单应用
51 1
|
7月前
|
安全 Java
Java Queue新玩法:用LinkedList打造高效队列,让你的代码飞起来!
【6月更文挑战第18天】Java集合框架中的`LinkedList`不仅是列表,还可作为高效队列。由于其在链表两端进行添加/移除操作的时间复杂度为O(1),故适合实现并发环境下的任务队列。通过案例展示了如何创建、添加任务及确保线程安全,揭示了`LinkedList`提升代码性能的秘密,特别是在多线程应用中的价值。
60 4