A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

Queue

    Java中Queue的类图:


1.Queue介绍

        Queue,java中模拟队列的一种数据结构,先进先出(FIFO),不支持随机访问数据,通过offer()方法增加数据到队列尾部,poll()获取队列头部元素,可以将Queue看成一个通道,最先走进的通道的也是最先走出通道的,最后走进去的,在通道里面呆的时间最久。

        

2.Queue主要实现

    Queue中的主要实现有PriorityQueue和LinkedList. PriorityQueue目前还没有接触过,等到用到的时候再来补充,我们这里主要介绍下LinkedList,这是一个功能强大的集合。

    LinkedList同时实现list和Deque接口,所以它也同时具有了list和queue的特点,它既有索引,是一个list,同时也是一个双向队列,所有它的操作方式也比较多样,list和queue的都可以用,我们用代码看下具体用法:



  • package com.ljw.ColleactionAndMap;







  • import java.util.LinkedList;



  • import java.util.List;



  • import java.util.ListIterator;



  • import java.util.Queue;







  • /**



  • * Created by liujiawei on 2018/6/29.



  • */



  • public class TestLinkedList {



  •     public static void main(String[] args) {



  •         List a = new LinkedList();



  •         Queue q = new LinkedList();



  •         LinkedList linkedList = new LinkedList();











  •         linkedList.add(0,"jack");



  •         linkedList.add(1,"tom");











  •         System.out.println(linkedList);







  •         //双向链表 直接操作头尾元素



  •         linkedList.addFirst("jerry");



  •         System.out.println(linkedList);



  •         linkedList.addLast("pony");



  •         System.out.println(linkedList);







  •         System.out.println("栈顶元素" + linkedList.peek());



  •         System.out.println("栈顶元素" + linkedList.peekFirst());



  •         System.out.println("栈底元素" + linkedList.peekLast());







  •         linkedList.offer("tony");







  •         System.out.println(linkedList.pop());











  •         ListIterator listIterator = linkedList.listIterator();



  •         while(listIterator.hasNext()){



  •             System.out.println(listIterator.next());



  •         }











  •     }







  • }


运行结果:


    queue是不支持随机访问数据的,但是linkedlist因为可以当成list使用,所以他支持随机访问,也可以使用队列中操作头尾的方法,如peekFirst(),offer(),poll()等,同时还可以使用栈的一些方法,如pop()等,是一个功能强大的集合类。


    Linkedlist优缺点:优点:
(1)内部使用链表实现,执行插入、删除操作很快;
(2)功能强大,list,queue和stack的方法都可以使用;
缺点:

(1)随机访问数据方面不如内部是用数组实现的arraylist和vector。


3.ArrayList,Vector,LinkedList比较

(1)如果需要遍历集合,ArrayList和Vector通过随机访问的方式比较好,LinkedList通过迭代器的方式比较好;(2)需要经常执行插入、删除操作时,使用LinkedList比较好,因为他用链表实现,ArrayList和Vector内部会扩容动态分配大小,耗费时间;

(3)需要线程安全,考虑使用Vector。

【转载】原文地址:https://blog.csdn.net/qq_23585245/article/details/80864905


2 个回复

倒序浏览
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马