java集合性能比较

package frank;
import java.lang.*;
import java.util.LinkedList;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *  各种集合的性能对比
 * */
public class App
{
	public static void main(String[] args)throws Exception
	{
		String[] tst1 = new String[900000];
		for(int i = 0;i<900000;i++)
		{
			tst1[i]=String.valueOf(i);
		}
		ArrayList al = new ArrayList();
		for(int i = 0;i<900000;i++)
		{
			al.add(tst1[i]);
		}
		LinkedList ll = new LinkedList();
		for(int i = 0;i<900000;i++)
		{
			ll.add(tst1[i]);
		}
		long start = System.currentTimeMillis();
		Iterator it = al.iterator();
		for(;it.hasNext();)
		{
			it.next();
		}
		System.out.println("迭代ArrayList集合元素的时间:"+(System.currentTimeMillis() - start));
		start = System.currentTimeMillis();
		it = ll.iterator();
		for(;it.hasNext();)
		{
			it.next();
		}
		System.out.println("迭代Linked集合元素的时间:"+(System.currentTimeMillis()-start));
		/**
		 * 运行结果:
		 * 迭代ArrayList集合元素的时间:8
		迭代Linked集合元素的时间:10
		运行上面程序则需要修改JVM默认的内存大小
		java -Xms128m -Xmx512m -cp ../class frank.App
		-Xms 设置JVM的堆内存初始大小
		-Xmx 设置JVM的堆内存最大大小
		如果用到ArrayList、Vector集合应该使用随机访问方法(get)来遍历,这样子性能更好。对于LinkedList则使用Iterator迭代器来遍历。如果经常使用插入、删除操作则使用LinkedList性能更好,如果使用ArrayList的话需要重新分配数组大小,其时间开销比LinkedList的时间开销大几十倍。
		如果需要用多线程访问List则考虑使用Collections将集合包装成线程安全的集合。
		 * */
	}
}

  

posted on 2013-10-22 11:25  wp456  阅读(460)  评论(0)    收藏  举报

导航