面试刷题8:Vector ArrayList LinkedList区别?
2020-03-25 16:06:30来源:博客园 阅读 ()
面试刷题8:Vector ArrayList LinkedList区别?
高效的管理和操作数据(数据结构)是非常重要的,java提供了对应的集合框架。
我是李福春,我在准备面试,今天的问题是:
Vector,ArrayList,LinkedList有什么区别?
这3个货都是List的直接子类或者间接子类,实现的是顺序集合,都提供了add,delete,index,遍历等操作。
区别是:
Vector是线程安全的,性能略差,自动扩容按照1倍扩容,适合按照顺序检索的场景;
ArrayLIst是非线程安全的,性能高,扩容基数0.5, 适合按照顺序检索的场景;
LinkedList是双向链表,是非线程安全的,性能高,不存在扩容,适合增加,删除的场景
Java的集合体系
Map没有继承Collection,不归纳如集合体系;
一些集合的实现是依赖于map来实现的;
比如TreeSet, 底层是 TreeMap , 只使用了key;? 它是有序的,查询时间复杂度是常数级别,增加,删除,包含操作时间复杂度是log(n)
HashSet底层实现是HashMap , 它是无顺序的,增删包含操作是常数级别的时间复杂度,但是不宜设置过大的容量;
以上的集合除了Vector都是线程非安全的。
集合的算法
主要说默认的排序算法,Arrays.sort(T[])
当传入原始类型,使用的是双轴快速排序;
当传入对象类型,使用的是归并和二分插入综合的排序;
java8提供了stream,集合也支持并行排序。可以充分发挥多核心的计算能力。
Java8对集合的改进
基于接口的defalut方法,扩展了现有集合,可以轻松的Stream化;
小结
本篇先说明了ArrayList,LinkedList,Vector的相同点,再从线程安全,底层结构,扩容,性能,适用场景做了区别对比。
在扩展回顾了java的Collection体系包含的容器,特别之处了TreeSet,HashSet的底层实现马甲。
在简单说了一下集合的默认排序算法和并行排序算法,以及集合在java8中的Stream化。
原创不易,转载请注明出处。
原文链接:https://www.cnblogs.com/snidget/p/12566143.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- JVM常见面试题解析 2020-06-11
- 作为一个面试官,我想问问你Redis分布式锁怎么搞? 2020-06-10
- 送你一份年薪百万的抖音Java岗内部面试题 2020-06-09
- 一口气说出 6种 延时队列的实现方案,面试稳稳的 2020-06-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash