List、Queue

  • Post author:
  • Post category:其他


(1)ArrayList

底层是基于动态数组的数据结构。是有存放顺序的。

(2)LinkedList

底层是基于双链表的数据结构。每一个存储单元,都涉及到其他两个引用。

 优缺点: 在执行get()/set()时,ArrayList的效率高,LinkedList需要移动指针,效率低
             在增加/删除操作时,LinkedList效率高,ArrayList效率低(需要扩容,移动元素)。
    ps:当然,在元素的数量大的情况下,区别才明显。         

(3)Vector:是一个比较古老的集合类型,线程安全,但是效率特别低。
                       虽然安全,也不建议使用

接口Queue

Queue也是Collection的子接口,是一种数据结构,队列。

队列:通常都是一端进(offer),另一端出(poll)。

    进出原则:FIFO 


    因为队列要经常进行增删操作,所以使用Linkedlist
    实现了Queue接口.  

    常用方法:
boolean offer(E e):
            元素从队尾进入队列。
E poll():
           从队首移除元素,返回被移除的元素。当队列没有元素时
           返回null.
E peek(): 
            查看队首元素,不移除。队列中没有元素时,返回null.        
    注意: 为了避免移除队列的队首时出现null,我们最好先查看队首
             是不是null.

Deque:是一个Queue的子接口,实现的是双端队列的数据结构。

双端队列:两端都可以进,也都可以出。

     E offerFirst();
     E offerLast(); 
     E pollFirst();
     E pollLast();
     E peekFirst();
     E peekLast(); 

   栈的数据结构:先进后出:FILO
            我们可以将双端队列的一端进行禁止操作。另一端进或
            出,即Stack 

    void push(E e):
        将元素 e推进栈中
    E pop():
                    将栈中的最顶端的元素,移除。
 增强for循环-foreach循环。
 for(元素类型 变量名:要遍历的集合或者数组){

 }

 与经典for循环的区别:
 (1)增强for循环中无法使用下标。
 (2)经典for循环中可以使用下标。跟下标有关的逻辑,随便写。    



版权声明:本文为qq_40933888原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。