在线等(新手试问)

syj247 2010-04-08 10:24:08
AarryList LinkedList 和 vector之间的区别和联系
谢谢了


...全文
80 8 打赏 收藏 转发到动态 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonytone2008 2010-04-08
  • 打赏
  • 举报
回复
恩,大家都总结得不错,我觉得主要看用法,经常增加,删除用LinkedList,经常修改,查询用ArrayList,通常不用Vector
davis_rly 2010-04-08
  • 打赏
  • 举报
回复
ArrayList实现了RandomAccess接口,所以支持随机访问,LinkedList本质上是双向链表
这两者都实现了List接口,看名字就可以看得出来
Vector是线程安全的数据结构,但是基本不用了,很早以前的东东了,我自己学的时候就不去怎么了解这个的
syj247 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bibihenmuc 的回复:]
AarryList 底层用数组实现,增删慢查询快
LinkedList 用链表实现,增删快查询慢
vector 是早期版本的东西,现在基本不使用
[/Quote]
看你应该和我是同一个人教的 (猛哥?)
syj247 2010-04-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liuxiaolei7676 的回复:]
|--List:它对元素的存取是有顺序的。可以存入重复元素,因为该集合中的元素都有角标。
|--ArrayList:底层是数组数据结构。不同步的。对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
|--Vector:底层是数组数据结构。同步的。效率非常低。支持枚举。但枚举已被迭代器所取代。
|--LinkedList……
[/Quote]

很清晰 ·谢谢了
liuxiaolei7676 2010-04-08
  • 打赏
  • 举报
回复
|--List:它对元素的存取是有顺序的。可以存入重复元素,因为该集合中的元素都有角标。
|--ArrayList:底层是数组数据结构。不同步的。对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
|--Vector:底层是数组数据结构。同步的。效率非常低。支持枚举。但枚举已被迭代器所取代。
|--LinkedList:底层是链表数据结构的。对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

(如果集合中的元素的数目大于目前集合数组的长度时,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%,ArrayList比较节省内存空间。)

ArrayList、LinkedList和Vector都可以使用自身的get()方法跟迭代器进行集合元素遍历,Vector还可使用枚举进行遍历,实现的功能跟迭代器是相同的,但迭代器接口中添加了一个可选的移除操作,并使用较短的方法名。新的实现应该优先考虑使用 Iterator 接口而不是 Enumeration 接口。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liuxiaolei7676/archive/2010/04/07/5459768.aspx
bibihenmuc 2010-04-08
  • 打赏
  • 举报
回复
AarryList 底层用数组实现,增删慢查询快
LinkedList 用链表实现,增删快查询慢
vector 是早期版本的东西,现在基本不使用
  • 打赏
  • 举报
回复
google or baidu
铑枪--突廆孒 2010-04-08
  • 打赏
  • 举报
回复
去网上搜索一下,多得很。。。


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,因此必须捕获该异常。
相关推荐

62,569

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告