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将集合包装成线程安全的集合。 * */ } }
相关文章推荐
- 【Java 集合与队列的插入、删除在并发下的性能比较】
- Java 集合与队列的插入、删除在并发下的性能比较
- Java 集合与队列的插入、删除在并发下的性能比较
- 【Java 集合与队列的插入、删除在并发下的性能比较】
- Java 集合与队列的插入、删除在并发下的性能比较
- Java 中常用集合性能比较
- 用队列来处理订单以及集合间性能比较
- Java数组和各种List的性能比较
- java序列化方式性能比较
- java原生序列化和Kryo序列化性能比较
- Java 性能调优指南之 Java 集合概览
- Java 集合系列之 List总结(LinkedList, ArrayList等使用场景和性能分析)
- Java多线程 -- Map容器性能比较
- java的三种写文件方法的效率性能比较
- java对list集合使用comparator方法比较排序
- Java中XML文档解析技术:性能比较
- Java 几种动态代理实现及其性能比较
- php7 vs java8 vs nodejs5 vs lua5.2 计算性能比较
- Java学习笔记--集合元素的比较Comparable,Comparator
- Java序列化工具大全及性能比较