Java的ArrayList与Vector比较
来源:互联网 发布:集搜客网页抓取软件 编辑:程序博客网 时间:2024/06/07 02:58
其两者内部数据保存都是由数组实现
1. ArrayList的实现是线程不同的(方法实现上没有加 synchronized),而Vector是线程同步的。若想线程安全,那么它必须 保持外部同步。这样造成的结果:效率比Vector高,但是线程不安全。
2. ArrayList扩容时每次为原来的50%, 而Vector扩容1倍。
若ArrayList线程同步,需采用如下的方式:
* It is imperative that the user manually synchronize on the returned
* list when iterating over it:
* <pre>
* List list = Collections.synchronizedList(new ArrayList());
* ...
* synchronized(list) { //确保整个代码块是同步的
* Iterator i = list.iterator(); // Must be in synchronized block
* while (i.hasNext())
* foo(i.next());
* }
这是Stackoverflow的解释:
其具体实现代码如下所示:
首先创建ArrayList, 然后调用Collections的静态方法
publicstatic<T> List<T> synchronizedList(List<T>list)
其中,SynchronizedList<E>是Collections的一个内部静态类,
其返回的List是同步的原因:在SynchronizedList静态内部类中,通过synchronized同步代码块来完成同步,其本质还是调用了ArrayList的一些操作函数,例如add操作:
因此,SynchroizedList 与Vector的区别:
1 同步的方式: SynchronizedList采用同步块,而Vector采用同步方法
2 扩容大小: SynchronizedList每次扩容50%, 而Vector正好扩大一倍。
参考资料:
http://www.cnblogs.com/yanghuahui/p/3365976.html
http://stackoverflow.com/questions/9468187/collections-synchronizedlist-and-synchronized
0 0
- Java的ArrayList与Vector比较
- Java和Android中ArrayList与Vector的扩容比较
- Java中Arraylist容器与Vector容器的比较
- Java中Arraylist容器与Vector容器的比较
- ArrayList与Vector比较
- Java中Vector和Arraylist的比较
- Java中的Vector和ArrayList的比较
- Java中的Vector和ArrayList的比较
- vector与arraylist 详细比较
- java ArrayList与Vector
- java集合类(五)Vector与ArrayList比较
- Enumeration与Iterator的对比,ArrayList与Vector的比较
- Java Vector与ArrayList的区别
- Java Vector与ArrayList的区别
- java中vector与arraylist的区别
- java 集合 ArrayList与Vector的区别:
- Java 集合ArrayList与Vector的详解
- Java中Vector与ArrayList的区别?
- 朴素贝叶斯--matlab自带工具箱的使用
- 【ACM】:菜鸟,大牛跟教主的区别
- jvm原理
- SQL快速参考list
- linux下安装nginx
- Java的ArrayList与Vector比较
- Spring Boot示例 - 1. 使用Spring Boot Actuator构建RESTful web service
- CentOS7 常用命令总结
- Sieve of Eratosthenes(埃拉托斯特尼素数筛选法)--java实现
- CentOS7 PHP 连接 MSSQL 2008
- 他成就比李安还高,却半辈子活在歧视中
- iOS给照片添加水印效果
- python机器学习sklearn数据集iris介绍
- MySQL数据库迁移