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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

说出ArrayList,Vector, LinkedList的存储性能和特性

3 个回复

倒序浏览
ArrayList和Vector在底层都是用数组来存储数据,插入时就会创造一个新数组并把数据全部转移至其内,因此在这两种数据结构中插入数据会有很大损耗,但是由于数组特性,他们索引取出数据性能较好。Vector更注重线程安全,所以通用性较差,大多数情况下可以用Arraylist就够了。LinkedList内部结构是双向链表,即保存一种含有前后索引的对象的引用的对象的方式(好纠结。。。),所以插入时只需要更改有限几个对象内的引用就可以了,所以插入损耗低。但是如果要以索引取出对象就麻烦了。在正着顺序遍历或倒着遍历时LinkedList性能也很好,只是在随机读取(按索引读取)时损耗高

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
ArrayList  底层是用数组来存储数据!      索引数据快  而插入数据慢.
linkedList 内部结构是双向链表!        索引稍慢 而插入数据稍快.

Vector  底层跟ArrayList一样!  通用性差,注重线程安全. 通常用ArrayList就行了

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
本帖最后由 吴健 于 2012-12-9 10:04 编辑

    ArrayList和Vector都是基于数组实现的List类,所以ArrayList类和Vector类中封装了一个动态再分配的object[]数组。每个ArrayList和Vector对象有一个capacity属性,这个capacity表示它们所 封装的object[]数组的长度。当向ArrayList或Vector添加元素时,capacity会自动增加。
    Vector是一个古老的集合,从JDK1.0开始时就有了,从JDK1.2以后,就将Vector改为实现List接口,从而导致Vector中有一些功能重复的方法。
    ArrayList和Vector的区别是:ArrayList是线程不安全的,当多个线程访问同一个ArrayList时,如果有超过一个线程修改ArrayList集合时,需要保证程序的同步性。但是Vector是线程安全的,但是就因为如此Vector的性能要比ArrayList差。
    LinkedList是基于链表实现的List类,对与顺序访问集合中的元素进行了优化,特别是插入、删除时效率高。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马