ArrayList,LinkedList,Vector初步认识

先说一说以下概念:

队列:先进先出 如同一个水瓶。

堆栈:先进后出 如同一个管道。

 

 

public interface Deque<E> extends Queue<E>

 
       一个线性 collection,支持在两端插入和移除元素。名称 deque 是“double ended queue(双端队列)”的缩写,通常读为“deck”。大多数 Deque 实现对于它们能够包含的元素数没有固定限制,但此接口既支持有容量限制的双端队列,也支持没有固定大小限制的双端队列。


       此接口定义在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法。每种方法都存在两种形式:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是专为使用有容量限制的 Deque 实现设计的;在大多数实现中,插入操作不能失败。


下表总结了上述 12 种方法:
第一个元素(头部)
最后一个元素(尾部)
抛出异常
特殊值
抛出异常
特殊值插入
   addFirst(e)
   offerFirst(e)
   addLast(e)
   offerLast(e)移除
   removeFirst()
   pollFirst()
   removeLast()
   pollLast()检查
   getFirst()
   peekFirst()
   getLast()
   peekLast()
此接口扩展了 Queue 接口。在将双端队列用作队列时,将得到 FIFO(先进先出)行为。将元素添加到双端队列的末尾,从双端队列的开头移除元素。从 Queue 接口继承的方法完全等效于 Deque 方法,如下表所示:

Queue 方法等效 Deque 方法add(e)
   addLast(e)offer(e)
   offerLast(e)remove()
   removeFirst()poll()
   pollFirst()element()
   getFirst()peek()
   peekFirst()
双端队列也可用作 LIFO(后进先出)堆栈。应优先使用此接口而不是遗留 Stack 类。在将双端队列用作堆栈时,元素被推入双端队列的开头并从双端队列开头弹出。堆栈方法完全等效于 Deque 方法,如下表所示:

堆栈方法等效 Deque 方法push(e)
addFirst(e)pop()
removeFirst()peek()
peekFirst()

ArrayList:数组数据结构,线程不同步,查询速度快。增删稍慢,需要数组的增容。

LinkedList:链表结构,线程不同步,增删速度快。此类实现 Deque 接口,为 add、poll 提供先进先出队列操作,以及其他堆栈和双端队列操作。所有操作都是按照双重链接列表的需要执行的。在列表中编索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。

注意,此实现不是同步的。如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须
保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用
Collections.synchronizedList
方法来“包装”该列表。最好在创建时完成这一操作,以防止对列表进行意外的不同步访问,如下所示:List list = Collections.sychronizedList(new LinkList(……)); 特方法 addFirst():指定元素插入此列表的开头。addLast():指定元素添加到此列表的结尾。 getFirst():返回此列表的第一个元素。getLast() :返回此列表的最后一个元素。removeFrist():removeLast():Vector:数组数据结构,线程同步,查询增删效率低。数组数据结构,线程同步,查询增删效率低。

Vector超过它的容量大小时,随着容量增大而翻倍,而ArrayList只增加50%的大小,这样,ArrayList也有利于节约内存空间。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值