ArrayList、Vector、LinkedList区别

关于这三者的区别,很久之前的时候已经懂了。但是,如果要在面试的时候,准确说出来还是有一定难度。特别是,最近几回都是打酱油去裸考的……

好吧,现在就自己粗浅的理解,谈谈吧……

ArrayList和Vector应该可以归到一类上去。因为,两者底层都是借着一个数组的,所以显然易见,两者通过索引号(也就是说,所谓的数组下标)可以轻易地检索到索引号所指示的元素;但是若然需要增/删、修改元素就会显得十分吃力。而两者的区别在于,Vector的方法很多都是同步方法,而ArrayList不是,所以,Vector就是所谓的线程安全,而Arraylist不是。而关于解决线程安全问题,个人认为使用同步的方式显得过时了,可以参考使用LocalThread.!!!!!!!!!!大笑

LinkedList底层不是数组,而是类似c语言中的双向链表。因为java中没有指针,所以,指针在这里换成引用罢了。如同双向链表,增删修改元素是他的强项,查找变成了鸡肋。

好吧,就这么多!随便谈谈而已,欢迎拍砖!

 

附:一篇关于这个话题的论坛讨论:

http://stackoverflow.com/questions/322715/when-to-use-linkedlist-over-arraylist

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值