Java队列接口

介绍:

队列是FIFO(先进先出)抽象数据类型(ADT)。 换句话说,按插入顺序将元素删除。

java.util.Queue是Java 的接口,并且从java.util.Collection扩展。 一些常用的Queue实现类包括LinkedList, ArrayDequePriorityQueue

队列类型:

队列有两个主要类别:

1.阻塞队列:这些是具有固定容量有界队列。 这意味着我们必须在创建队列时提供队列的容量。

java.util.concurrent包中提供了有界队列的实现类 例如,一个ArrayBlockingQueue

2.非阻塞队列: java.util包下的队列实现属于此队列类别。 例如, LinkedList或PriorityQueue

顾名思义, 这些元素是无限制的,我们可以根据需要插入任意数量的元素。

关键方法:

让我们看一下Queue接口公开的最常用方法:

引发异常:

下面的方法将尝试对队列进行操作。 如果由于某种原因(例如由于容量问题)而失败,则会抛出运行时异常:

1.

使用add() ,我们可以将元素添加到队列中:

Queue<Integer> queue = new LinkedList<>();
 
queue.add(1);
queue.add(2);
queue.add(3);

如果元素插入成功,则返回true 。 否则,它将引发IllegalStateException。

2.

我们可以使用remove()方法来检索和删除队列头部的元素

int removedItem = queue.remove();
 
System.out.println(removedItem); //prints 1
 
System.out.println(queue); // [2, 3]

请注意,我们从队列中删除了第一个元素。 因此,现在我们的队列仅包含[2,3]

在空队列上调用时,此方法将引发NoSuchElementException

3.

此方法将仅返回队列的head元素,而不会将其删除

int topItem = queue.element(); // 2
 
System.out.println(queue); //[2, 3]

请注意,我们的队列仍然包含两个元素。

就像remove()一样 ,它将为空队列抛出NoSuchElementException异常。

返回特殊值:

现在,我们将介绍上述方法的细微变化。 这些方法不会抛出异常。 当他们无法执行操作时,他们宁愿返回一些值

1.

就像add()一样 ,我们有一个offer()方法,可以用来插入元素:

Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);

如果无法插入,它将返回false。

2.

我们可以使用poll()检索和删除元素:

int removedItem = queue.poll(); // returns 1
 
System.out.println(queue); //[2, 3]

对于空队列,它将仅返回一个值。

3.

element()类似,它只是检索队列的最前面的元素:

int topItem = queue.peek(); // 2
 
System.out.println(queue); //still [2, 3]

由于我们已经删除了1 ,因此这里的顶部元素是2

如果在空队列中使用此方法,则将获得值。

其他有用的方法:

由于QueueCollection接口扩展而来,因此它也从该接口继承方法。 一些有用的包括:

1. size():返回队列的大小

2. contains():如果元素存在于队列中,则返回true

3. isEmpty() 对于空队列,它将返回true 。 否则为false

结论:

在本文中,我们讨论了Java中的Queue接口。 我们介绍了此接口公开的所有主要方法。

成为第一个发表评论的人。

翻译自: https://www.javacodegeeks.com/2019/05/java-queue-interface.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值