java queue详解

java queue详解队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。官方描述:设计用于在处理之前容纳元素的集合。除了基本的集合操作外,队列还提供了额外的插入、提取和检查操作。这些方法都以两种形式存在:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null或false,取决于操作)。插入操作的后一种形式是专门为容量受限的队列实现而设计的;在大多数实现中,插入操作不会失败。方.

队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

官方描述:

设计用于在处理之前容纳元素的集合。除了基本的集合操作外,队列还提供了额外的插入、提取和检查操作。这些方法都以两种形式存在:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null或false,取决于操作)。插入操作的后一种形式是专门为容量受限的队列实现而设计的;在大多数实现中,插入操作不会失败。

方法:

  Throws exception/Description Return special value/Description
insert

add(e)

如果可以立即将指定的元素插入此队列,而不会违反容量限制,则在成功时返回true,如果当前没有可用空间,则抛出IllegalStateException。

offer(e)

如果可以在不违反容量限制的情况下立即将指定的元素插入此队列。

Remove

remove()

检索并删除此队列的头。

poll()

检索并删除此队列的头,如果此队列为空,则返回null。

Examine

element()

检索但不删除此队列的头。

peek()

检索但不删除此队列的头,如果此队列为空,则返回null。

队列通常但不一定以FIFO(先进先出)的方式对元素进行排序。例外情况包括优先级队列(根据提供的比较器对元素进行排序或元素的自然排序)和LIFO队列(或堆栈),对LIFO进行排序(后进先出)。无论使用哪种顺序,队列的开头都是该元素,可以通过调用remove()或poll()将其删除。在FIFO队列中,所有新元素都插入队列的尾部。其他种类的队列可能使用不同的放置规则。每个Queue实现必须指定其排序属性。

offer方法在可能的情况下插入一个元素,否则返回false。这不同于Collection.add方法,后者只能通过抛出未经检查的异常来添加元素。 offer方法设计用于在正常情况下(而不是在异常情况下)发生故障时,例如在固定容量(或“有界”)队列中使用。

remove()和poll()方法将删除并返回队列的头部。确切地说,从队列中删除了哪个元素是队列的排序策略的函数,每个实现的实现方法不同。仅当队列为空时,remove()和poll()方法的行为不同:remove()方法引发异常,而poll()方法返回null。

element()和peek()方法返回但不删除队列的头部。

队列实现通常不允许插入null元素,尽管某些实现(例如LinkedList)不允许插入null。即使在允许的实现中,也不应将null插入到队列中,因为poll方法还将null用作特殊的返回值,以指示该队列不包含任何元素。

用法:

import java.util.LinkedList;
import java.util.Queue;
 
public class Main {
    public static void main(String[] args) {
        //add()和remove()方法在失败的时候会抛出异常(不推荐)
        Queue<String> queue = new LinkedList<String>();
        //添加元素
        queue.offer("a");
        queue.offer("b");
        queue.offer("c");
        queue.offer("d");
        queue.offer("e");
        for(String q : queue){
            System.out.println(q);
        }
        System.out.println("===");
        System.out.println("poll="+queue.poll()); //返回第一个元素,并在队列中删除
        for(String q : queue){
            System.out.println(q);
        }
        System.out.println("===");
        System.out.println("element="+queue.element()); //返回第一个元素 
        for(String q : queue){
            System.out.println(q);
        }
        System.out.println("===");
        System.out.println("peek="+queue.peek()); //返回第一个元素 
        for(String q : queue){
            System.out.println(q);
        }
    }
}

 

今天的文章java queue详解分享到此就结束了,感谢您的阅读。

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注