您的位置:首页 > 编程语言 > Java开发

java集合性能比较

2013-10-22 11:25 197 查看


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将集合包装成线程安全的集合。
* */
}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: