容器的一些问题arraylist和linkedlist,vector之间的区别

dlsundway 2008-03-04 10:27:54
容器的一些问题arraylist和linkedlist,vector之间的区别
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dlsundway 2008-03-06
  • 打赏
  • 举报
回复
谢谢萨
qiuqiupeng 2008-03-06
  • 打赏
  • 举报
回复
LinkedList类
  LinkedList实现了List接口,允许null 元素。此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList 可被用作堆栈(stack),队列(queue)或双向队列(deque)。
  注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
    List list = Collections.synchronizedList(new LinkedList(...));

ArrayList类
  ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
  每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
  和LinkedList一样,ArrayList也是非同步的(unsynchronized)。

Vector类
  Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的 Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。


帖来的,先用着
xian_hf 2008-03-04
  • 打赏
  • 举报
回复
这3个都是实现了List接口,都具有List接口的方法.而List接口是继承自Collection接口的.
具体在工程中用哪个完全要看你的需求.有的是查询速度快,有的则是修改,删除速度快.
xian_hf 2008-03-04
  • 打赏
  • 举报
回复
楼主所说的属于集合框架,我先把层次说一下

Collection: List :---LinkedList 支持随机访问
---ArrayList   如果访问数据时的抖动不是很大,而只要顺序访问列表元素,这个会更快
---Vector:     与数组一样,一个可以使用整数索引访问的类,可以根据需要增大或缩小,                     5.0之后,有了泛型
----Stack

: Set :---TreeSet
:---HashSet:

---LinkedHashSet

alice_0812 2008-03-04
  • 打赏
  • 举报
回复
Voctor 支持同步,访问时有先后顺序要求,效率低
ArrayList 没有同步,效率高

具体在工程中用哪个完全要看你的需求

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧