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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Alex shaw 中级黑马   /  2013-3-18 09:16  /  7969 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 肖路宽 于 2013-3-18 12:43 编辑

问一下关于ArrayList,LinkList以及vector的区别以及底层的实现方式,还有就是vector是如何实现同步的

点评

如果你特别想深入了解,建议你看看java源代码,若问题未解决,请继续追问,若问题已经解决,请将分类改为“已解决”,否则将扣除技术分,谢谢  发表于 2013-3-18 12:36

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 鼓励鼓励,多看看毕老师的视频,实在想了解.

查看全部评分

4 个回复

倒序浏览
首先说ArrayList,底层数据结构是数组结构,你就可以把它看成是一个可变大小的且只能装对象的数组。
其次说LinkedList,底层数据结构是链表结构的。
再说Vector,底层数据结构也是数组结构的,除了线程安全问题上不同于ArrayList之外,其余几乎一样。

数组结构的查询速度比较快,因为可以通过索引快速锁定元素位置。链表结构的插入速度较快。
至于Vector实现同步的方法我也记不太清了,但我觉得是通过Sychronized实现的吧,你可以查一下Vector的源码。
回复 使用道具 举报
首先说ArrayList,底层数据结构是数组结构,你就可以把它看成是一个可变大小的且只能装对象的数组。
其次说LinkedList,底层数据结构是链表结构的。
再说Vector,底层数据结构也是数组结构的,除了线程安全问题上不同于ArrayList之外,其余几乎一样。

数组结构的查询速度比较快,因为可以通过索引快速锁定元素位置。链表结构的插入速度较快。
至于Vector实现同步的方法我也记不太清了,但我觉得是通过Sychronized实现的吧,你可以查一下Vector的源码。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
ArrayList底层使用的是数组数据结构,因为数组有索引(角标)所以ArrayList的查询速度快,而添加删除元素速度稍慢。因为,你每删除或者添加一个元素,你都要移动所添加或删除元素后面的所有数据,该集合是线程不同步的
LinkedList底层使用的是链表数据结构,链表数据结构是没有索引的,当前元素只和他的前一个和后一个元素有关联就像一串珠子一样,该数据结构的特点是,增加删除快,而查询比较慢,因为增加删除只需要找到当前元素,然后断掉当前元素与它前一个和后一个元素的关联即可,和数组比,链表不用重复大部分的数据移动工作,但是因为没有索引所以链表数据结构要一个一个的查询数据,所以LinkedList的查询速度稍慢
Vector:底层使用的是数组数据结构,和ArrayList的功能相当,但是Vector是线程同步的,JDK已经对Vector的底层源码中可能出现同步的操作加上了同步锁,但是线程同步之后有弊端,那就是每当操作Vector集合,都会去判断同步锁,较为浪费系统资源。而我们完全可以使用ArrayList来代替Vector,如果需要同步代码,我们也可以自己手动加上同步锁

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
      ArrayList类相当于数据结构中的线性表,他在底层使用数组来存储数据,因此适合快速获得指定位置的元素,
但是,在删除元素时,例如删除第一个元素,则后面的元素必须全部向前移动一位,显然开销很大,向第一个位
置增加元素时,两种效果类似。
     LinkList类相当于数据结构中的链表,它在底层使用对象来保存元素,因此适合元素的增加和删除。但是,要

获得指定位置的元素时,需要从头开始遍历。在实际编程中,通常采用面向接口的编程方法,
如:List<Integer>list = new ArrayList<Integer>();此时如果需要从列表中删除元素,可以将实现类换成LinkedList,
例如:List= new LinkedList<Integer>();
    Vetory类与ArrayList类在使用方式上比较类似,两者的核心区别在于Vector类中有些方法是支持同步的,

而ArrayList类中没有这样的方法,因此,Vetor类适合于需要线程安全的场合,而ArrayList更适合普通开发。由于支
持同步,Vetor的效率比ArrayList差。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马