java中Queue队列的介绍和使用(1)之LinkedList

public interface Queue<E>

extends Collection<E>

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

如果可能,offer 方法可插入一个元素,否则返回 false。这与 Collection.add 方法不同,该方法只能通过抛出未经检查的异常使添加元素失败。offer 方法设计用于正常的失败情况,而不是出现异常的情况,例如在容量固定(有界)的队列中。

remove()poll() 方法可移除和返回队列的头。到底从队列中移除哪个元素是队列排序策略的功能,而该策略在各种实现中是不同的。remove()poll() 方法仅在队列为空时其行为有所不同:remove() 方法抛出一个异常,而 poll() 方法则返回 null

element()peek() 返回,但不移除,队列的头。

Queue 接口并未定义阻塞队列的方法,而这在并发编程中是很常见的。BlockingQueue 接口定义了那些等待元素出现或等待队列中有可用空间的方法,这些方法扩展了此接口。

Queue 实现通常不允许插入 null 元素,尽管某些实现(如 LinkedList)并不禁止插入 null。即使在允许 null 的实现中,也不应该将 null 插入到 Queue 中,因为 null 也用作 poll 方法的一个特殊返回值,表明队列不包含元素。

Queue 实现通常未定义 equalshashCode 方法的基于元素的版本,而是从 Object 类继承了基于身份的版本,因为对于具有相同元素但有不同排序属性的队列而言,基于元素的相等性并非总是定义良好的。

方法摘要
Eelement() 检索,但是不移除此队列的头。
booleanoffer(E o) 如果可能,将指定的元素插入此队列。
Epeek() 检索,但是不移除此队列的头,如果此队列为空,则返回 null
Epoll() 检索并移除此队列的头,如果此队列为空,则返回 null
Eremove() 检索并移除此队列的头。
package queue; import java.util.*; public class LinkedistQueue {

public static void main(String[] args) {    Queue<String> queue = new LinkedList<String>();          queue.offer("1");//插入一个元素          queue.offer("2");          queue.offer("3");          //打印元素个数          System.out.println("queue.size()"+queue.size());          //遍历打印所有的元素,安装插入是顺序打印          for (String string : queue)          {              System.out.print(string+" ");          }         System.out.println();        System.out.println("queue.size()"+queue.size());          System.out.println();        // java.util.NoSuchElementException //        while(queue.element()!=null){ //         String v=queue.remove(); //         System.out.print(v+" ");   //        } //        System.out.println(); //        System.out.println("queue.size()"+queue.size());          while(queue.peek()!=null){         String v=queue.poll();         System.out.print(v+" ");          }        System.out.println();        System.out.println("queue.size()"+queue.size());       }   }

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值