2025年java队列Queue方法[通俗易懂]

java队列Queue方法[通俗易懂]Queue 是一种很常见的数据结构类型 在 java 里面 Queue 是一个接口 它只是定义了一个基本的 Queue 应该有哪些功能规约 实际上有多个 Queue 的实现 有的是采用线性表实现 有的基于链表实现 还有的适用于多线程的环境 java 中具有 Queue 功能的类主要有如下几个 AbstractQueu ArrayBlockin ConcurrentLi

Queue是一种很常见的数据结构类型,在java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约。实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现。还有的适用于多线程的环境。java中具有Queue功能的类主要有如下几个:AbstractQueue, ArrayBlockingQueue, ConcurrentLinkedQueue, LinkedBlockingQueue, DelayQueue, LinkedList, PriorityBlockingQueue, PriorityQueue和ArrayDqueue。

Queue本身是一种先入先出的模型(FIFO),和我们日常生活中的排队模型很类似。根据不同的实现,他们主要有数组和链表两种实现形式。如下图:

在jdk里几个常用队列实现之间的类关系图如下:

我们可以看到,Deque也是一个接口,它继承了Queue的接口规范。其中LinkedList和ArrayDeque都是实现Deque接口,所以,可以说他们俩都是双向队列。Queue作为一个接口,它声明的几个基本操作无非就是入队和出队的操作,具体定义如下:

public interface Queue
    
    
    
    
    
    
    
    
      
        extends Collection 
       
         { 
        

boolean add(E e); // 添加素到队列中,相当于进入队尾排队。如果已满,抛出异常

boolean offer(E e); //添加素到队列中,相当于进入队尾排队.

E remove(); //移除队头素,如果为空,抛出异常

E poll(); //移除队头素,如果为空,返回null

E element(); //获取但不移除队列头的素,如果为空,抛出异常

E peek(); //获取但不移除队列头的素,如果为空,返回null
}












Deque

按照我们一般的理解,Deque是一个双向队列,这将意味着它不过是对Queue接口的增强。如果仔细分析Deque接口代码的话,我们会发现它里面主要包含有4个部分的功能定义。

1. 双向队列特定方法定义。

2. Queue方法定义。

3. Stack方法定义。

4. Collection方法定义。
其中第3,4部分的方法相当于告诉我们,具体实现Deque的类我们也可以把他们当成Stack和普通的Collection来使用。这也是接口定义规约带来的好处。这里我们就不再赘述。我们重点来对Queue相关的定义方法做一下概括:


add相关的方法有如下几个:

boolean add(E e);

boolean offer(E e);

void addFirst(E e);

void addLast(E e);

boolean offerFirst(E e);

boolean offerLast(E e);









这里定义了add, offer两个方法,从doc说明上来看,两者的基本上没什么区别。之所以定义了这两个方法是因为Deque继承了Collection, Queue两个接口,而这两个接口中都定义了增加素的方法声明。他们本身的目的是一样的,只是在队列里头,添加素肯定只是限于在队列的头或者尾添加。而offer作为一个更加适用于队列场景中的方法,也有存在的意义。他们的实现基本上一样,只是名字不同罢了。

remove相关的方法:

E removeFirst();

E removeLast();

E pollFirst();

E pollLast();

E remove();

E poll();









E getFirst();

E getLast();

E peekFirst();

E peekLast();

E element();

E peek();









例子

import java.util.Queue;
import java.util.LinkedList;
public class TestQueue {
public static void main(String[] args) {
Queue queue = new LinkedList ();
queue.offer("Hello");
queue.offer("World!");
queue.offer("你好!");
System.out.println(queue.size());
String str;
while((str=queue.poll())!=null){
System.out.print(str);
}
System.out.println();
System.out.println(queue.size());
}
}















今天的文章 2025年java队列Queue方法[通俗易懂]分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-04-25 08:17
下一篇 2025-07-23 14:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/124083.html