代码如下:
import java.util.Iterator; import java.util.List; public class Queue<E> extends AbstractSingleLinkedList<E> implements List<E> ,java.io.Serializable { private static final long serialVersionUID = 6203363761107460505L; // 指向队头 private transient Entry<E> front; private transient int size ; // 指向队尾 private transient Entry<E> rear; @Override public Iterator<E> singleListIterator() { return new QueueIterator(); } public Queue() { this.front = this.rear = null; } @Override public boolean add(E e) { Entry<E> newData = new Entry<E>(e, null); if (this.rear == null) { this.rear = newData; this.front = this.rear; } else { Entry<E> preElement = this.front; while (preElement.next != null) { preElement = preElement.next; } preElement.next = newData; } size ++; return true; } /** * 队尾加入元素 * @param e * @return */ public boolean append(E e) { return add(e); } /** * 取队头数据 */ @Override public E get(int index) { return this.front.element; } public E getFrist() { return get(0); } /** * 出队列 * @return */ public E delete() { E result = null; Entry<E> entry = this.front; if (entry != null) { result = entry.element; this.front = entry.next; entry = null; } size --; return result; } /** * 队长度 */ @Override public int size() { return size; } private static class Entry<E> { E element; Entry<E> next; public Entry(E element, Entry<E> next) { this.element = element; this.next = next; } } private class QueueIterator implements Iterator<E> { private Entry<E> itFront = front; @Override public boolean hasNext() { return itFront != null; } @Override public E next() { E result = itFront.element ; itFront = itFront.next; return result; } @Override public void remove() { throw new UnsupportedOperationException("can not remove"); } } }
测试代码如下:
public class QueueTest { public static void main(String[] args) throws Exception{ Queue<Integer> qu = new Queue<Integer>(); qu.append(123); qu.append(456); qu.append(789); qu.append(741); System.out.println(qu.getFrist()); qu.delete(); System.out.println(qu.getFrist()); for (Integer val : qu) { System.out.print(val); System.out.print('\t'); } } }
相关推荐
### 使用Vector类(继承)实现先进先出队列类Queue的Java实现 #### 概述 本篇文章将详细介绍如何利用Java中的`Vector`类来实现一个具有先进先出特性的队列类`Queue`。队列是一种特殊的线性表,只允许在一端进行插入...
总的来说,自定义Java的Queue队列需要对数据结构有深入的理解,并根据具体的应用场景来设计和实现。这包括选择合适的基础数据结构(如ArrayList、LinkedList等),考虑性能和并发访问等因素,以及正确实现Queue接口...
在Java中,队列可以使用`java.util.Queue`接口及其实现类如`LinkedList`来创建。 2. **Java 面向对象编程**:此项目中,队列可能被实现为一个类,包含队列的基本操作,如添加元素(enqueue)、移除元素(dequeue)...
### 消息队列Queue与Topic的区别 #### 一、概念概述 消息队列(Message Queue)是一种应用程序间通信机制,允许程序之间通过发送和接收消息进行通信,而不必直接建立连接。它提供了异步处理机制,使得消息的发送者...
在实际应用中,Java提供了一些内置的队列接口和类,如Queue、Deque、ArrayDeque等,它们提供了上述操作的实现。开发者可以根据具体需求选择合适的数据结构和实现方式。例如,如果需要高效访问元素,可以选择...
在这个Java队列实现的数据结构作业练习中,我们将会探讨如何使用Java来创建一个简单的队列,并分析`Queue.java`和`Node.java`这两个文件可能包含的内容。 首先,`Queue.java`很可能是实现队列接口或类的文件。在...
在Java中,我们可以使用`java.util.Queue`接口及其实现类,如`LinkedList`或`ArrayDeque`来创建队列。 接下来,我们需要创建两个线程类:一个是`CustomerThread`,代表等待叫号的客户,另一个是`ServiceThread`,...
标题“Java Design Demo -简单的队列”表明这是一个关于如何在Java中实现队列设计的示例项目。可能包含的是一个基础的队列实现,用于教学或演示目的,帮助开发者理解队列的基本操作,如enqueue(入队)和dequeue(出...
Java 利用 DelayedQueue 实现本地的延迟队列 DelayedQueue 是 Java 中的一种特殊的阻塞队列,它用于存放实现了 Delayed 接口的对象。这种队列是有序的,即队头对象的延迟到期时间最长。 DelayedQueue 能够满足我们...
设一循环队列Queue,只有头指针front,不设尾指针,另设一个内含元素个数的计数器,试写出相应的进队、出队算法。
Java中的`java.util.PriorityQueue`类为我们提供了实现优先队列的功能。 首先,让我们深入理解`PriorityQueue`的基本概念。`PriorityQueue`是基于二叉堆(一种自平衡的树形数据结构)实现的,它不保证队列的顺序,...
在这个场景中,我们探讨了两种使用Java实现队列的方法:一种是通过自定义的数组实现,另一种是利用内置的Vector类。接下来,我们将详细讨论这两种实现方式。 首先,我们来看基于数组的队列实现。`ArrayQueue.java`...
- **Queue接口**: Java的`Queue`接口定义了队列的基本操作,可以通过实现这个接口来创建自定义的队列实现。 3. **ArrayDeque示例** ```java import java.util.ArrayDeque; public class QueueExample { ...
### 线程安全队列Queue #### 一、背景介绍 在开发多线程应用时,线程安全成为至关重要的考量因素之一。特别是在需要处理并发任务时,如何确保线程之间的安全通信变得尤为重要。本篇文章将围绕一个具体的场景——...
在"Part03Queue"这个压缩包中,可能包含了关于如何在Java中实现环形队列的代码示例,通过学习这部分内容,你可以深入了解环形队列的内部机制,并能熟练地在自己的项目中运用。此外,"bearqu5"可能是一个开发者的名字...
在Java或Android环境中,我们可以使用ArrayList或LinkedList等内置数据结构来实现循环队列,但为了更好地控制队列的头部和尾部,我们通常选择自定义一个类来实现。以下是一个简单的循环队列实现: ```java public ...
这篇博客"Java实现的线程池、消息队列功能"似乎提供了关于如何在Java中实现这两种功能的源码示例。尽管描述部分为空,但从提供的文件名我们可以推测,`CodeReader.java`和`SourcePathManager.java`可能包含了读取和...
数据结构学习-Java使用数组实现简单的队列操作SimpleQueue,简单易懂,适合初学者。
本教程将深入探讨如何在Java中使用队列,特别是通过LinkedList实现。 ### 1. Java 队列接口 Java提供了多种队列实现,但它们都基于两个主要的接口:`Queue` 和 `Deque`。`Queue` 是基本的队列接口,而 `Deque`...