List实现类性能和特点分析
2018-03-22 20:17
218 查看
面向接口编程:
接口类型 变量 = new 实现类();
1):允许元素重复.
ArrayList类: 底层才有数组结构算法,方法没有使用synchronized修饰,线程不安全,性能相对于Vector较高.
ArrayList现在机会已经取代了Vector的江湖地位.
为了保证ArrayList的线程安全,List list = Collections.synchronizedList(new ArrayList(…));
LinkedList类:底层才有双向链表结构算法,方法没有使用synchronized修饰,线程不安全.
数组结构算法和双向链表结构算法的性能问题:
数组结构算法: 插入和删除操作速度低,查询和更改较快.
Vector类打死不用!即使要用选ArrayList类.
如果删除和插入操作频繁,应该选择LinkedList类.
如果查询操作频繁,应该使用ArrayList类.
在开发中使用ArrayList较多,根据具体的需求环境来做选择.
接口类型 变量 = new 实现类();
List list = new ArrayList();
List实现类特点和性能分析:
三者共同的特点(共同遵循的规范):1):允许元素重复.
2):记录元素的先后添加顺序.
Vector类: 底层才有数组结构算法,方法都使用了synchronized修饰,线程安全,但是性能相对于ArrayList较低.ArrayList类: 底层才有数组结构算法,方法没有使用synchronized修饰,线程不安全,性能相对于Vector较高.
ArrayList现在机会已经取代了Vector的江湖地位.
为了保证ArrayList的线程安全,List list = Collections.synchronizedList(new ArrayList(…));
LinkedList类:底层才有双向链表结构算法,方法没有使用synchronized修饰,线程不安全.
数组结构算法和双向链表结构算法的性能问题:
数组结构算法: 插入和删除操作速度低,查询和更改较快.
链表结构算法: 插入和删除操作速度快,查询和更改较慢.
使用的选择:Vector类打死不用!即使要用选ArrayList类.
如果删除和插入操作频繁,应该选择LinkedList类.
如果查询操作频繁,应该使用ArrayList类.
在开发中使用ArrayList较多,根据具体的需求环境来做选择.
相关文章推荐
- [疯狂Java]集合:Deque(双端队列)以及两个实现(ArrayDeque、LinkedList)、Stack(摒弃)、各线性表性能分析
- java集合框架之List实现类的性能分析
- Java使用Arrays、ArrayList、LinkedList、Vector实现插入查询性能分析
- PHP函数实现的原理及性能分析
- 百度工程师讲PHP函数的实现原理及性能分析(三)
- Nagios的安装配置与应用之四Nagios性能分析图表的实现
- list 、set 、map 粗浅性能对比分析
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
- 图解Arraylist内存分配,以及底层实现,扩容性能分析
- YDB针对范围查找所做的性能小改进(skiplist IO 分析)
- Android List,Set,Map集合安全 集合区别 并发集合类性能分析
- java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
- MYSQL批量插入数据库实现语句性能分析
- 单例的五种实现方式,及其性能分析。
- LinkedList源码分析:双向循环链表实现
- Java遍历集合的几种方法分析(实现原理、算法性能、适用场合)
- 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll、Epoll模型处理长连接性能比较
- 数组排序方法的性能比较(3):LINQ排序实现分析
- PHP函数的实现原理及性能分析