ArrayList与Vector的区别_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > ArrayList与Vector的区别

ArrayList与Vector的区别

 2016/5/30 5:31:29  InJavaWeTrust  程序员俱乐部  我要评论(0)
  • 摘要:ArrayList与Vector的区别相同这两个类都实现了List接口。他们都是有序集合。不同ArrayList实现不是同步的,Vector实现是同步的。ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡。Vector默认增长为原来两倍
  • 标签:list 区别 CTO

ArrayList与Vector的区别

?

????? 相同


????? 这两个类都实现了List接口


????? 他们都是有序集合。

?

????? 不同


????? ArrayList实现不是同步的,Vector实现是同步的。


????? ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡。Vector默认增长为原来两倍,而ArrayList的增长策略在文档中没有明确规定(从源代码看到的是增长为原来的1.5倍)。

?

????? 下面两段代码主要演示了线程同步的区别:

?

????? ArrayList:

class="java">import java.util.ArrayList;
/**
 * 
 * @author InJavaWeTrust
 *
 */
public class ArrayListMultiThread implements Runnable {
	public static ArrayList<Integer> li = new ArrayList<Integer>();
	public void run() {
		for (int i = 0; i < 100000; i++) {
			li.add(i);
		}
	}
	public static void main(String[] args) throws InterruptedException {
		Thread t1 = new Thread(new ArrayListMultiThread());
		Thread t2 = new Thread(new ArrayListMultiThread());
		t1.start();
		t2.start();
		t1.join();
		t2.join();
		System.out.println(li.size());
	}
}

?????? 运行结果:



?

??????? 这是因为ArrayList在扩展过程中,内部一致性遭到破坏,由于不是同步的,另外一个线程访问到了不一致的内部状态,导致出现越界问题。

?

????? Vector:

import java.util.Vector;
/**
 * 
 * @author InJavaWeTrust
 *
 */
public class VectorMultiThread implements Runnable {
	public static Vector<Integer> v = new Vector<Integer>();
	public void run(){
		for (int i = 0; i < 100000; i++) {
			v.add(i);
		}
	}
	public static void main(String[] args) throws InterruptedException {
		Thread t1 = new Thread(new VectorMultiThread());
		Thread t2 = new Thread(new VectorMultiThread());
		t1.start();
		t2.start();
		t1.join();
		t2.join();
		System.out.println(v.size());
	}
}

?运行结果:



?

?

?

?

  • 大小: 301 Bytes
  • 大小: 12.4 KB
  • 查看图片附件
上一篇: 视觉搜索地图问世,神经网络实现逆向图像搜索 下一篇: 没有下一篇了!
发表评论
用户名: 匿名