Java的运行速度与效率一直令人诟病,为了提高运行效率,选择合适的类和方法,是我们开发人员的重点,同样的结果,不同的方法会有很大的运行效率区别,这里就分析了JAVA中最常用的三种集合,以及其运行速度,供大家参考:
package cn.java.test.xls;
import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.LinkedList;//测试ArrayList,set,hashMap的速度
public class list_test {
public static void main(String[] args) {
// TODO Auto-generated method stub System.out.println("Spend time arraylist add 1000000 value:"+runing_time_array()+"毫秒"); System.out.println("Spend time linklist add 1000000 value:"+(runing_time_link())+"毫秒"); System.out.println("Spend time HashMap add 1000000 value:"+(runing_time_hashmap())+"毫秒"); System.out.println("Spend time arraylist remove 10000 value:"+runing_time_array_remove()+"毫秒"); System.out.println("Spend time linklist remove 10000 value:"+(runing_time_link_remove())+"毫秒"); System.out.println("Spend time HashMap remove 10000 value:"+(runing_time_hashmap_remove())+"毫秒"); } public static double runing_time_array(){ double startTime; double stopTime; startTime=new Date().getTime(); ArrayList al=new ArrayList(); for (int i=0;i<1000000;i++){ al.add("No"+i); } stopTime=new Date().getTime(); return (stopTime-startTime); } public static double runing_time_link(){ double startTime; double stopTime; startTime=new Date().getTime();LinkedList ll=new LinkedList();
for (int i=0;i<1000000;i++){ ll.add("No"+i); } stopTime=new Date().getTime(); return (stopTime-startTime); } public static double runing_time_hashmap() { double startTime; double stopTime; startTime=new Date().getTime(); HashMap HM=new HashMap(); for (int i=0;i<1000000;i++){ HM.put(i, "No"+i); } stopTime=new Date().getTime(); return (stopTime-startTime); } public static double runing_time_array_remove(){ double startTime; double stopTime; ArrayList al=new ArrayList(); for (int i=0;i<1000000;i++){ al.add("No"+i); } startTime=new Date().getTime(); for (int i=0;i<10000;i++) { // al.remove(i); al.remove("No"+i); } stopTime=new Date().getTime(); System.out.println(al.size()); return (stopTime-startTime); } public static double runing_time_link_remove(){ double startTime; double stopTime;LinkedList ll=new LinkedList();
for (int i=0;i<1000000;i++){ ll.add("No"+i); } startTime=new Date().getTime(); for (int i=0;i<10000;i++) { // ll.remove(i); ll.remove("No"+i); } stopTime=new Date().getTime(); System.out.println(ll.size()); return (stopTime-startTime); } public static double runing_time_hashmap_remove() { double startTime; double stopTime; HashMap HM=new HashMap(); for (int i=0;i<1000000;i++){ HM.put(i, "No"+i); } startTime=new Date().getTime(); for (int i=0;i<10000;i++) { HM.remove(i); } stopTime=new Date().getTime(); System.out.println(HM.size()); return (stopTime-startTime); }}
事实证明,在添加元素方面,三个类的运行效率没太大的差别,但在删除元素方面,差别就比较大了,证明HashMap的删除元素的速度是最快的,其次是LinkList,最慢的是ArrayList,其速度不是一般的慢,如果不注意还真的被坑了。
验证结果:
Spend time arraylist add 1000000 value:437.0毫秒
Spend time linklist add 1000000 value:379.0毫秒Spend time HashMap add 1000000 value:645.0毫秒990000Spend time arraylist remove 10000 value:5730.0毫秒990000Spend time linklist remove 10000 value:75.0毫秒990000Spend time HashMap remove 10000 value:1.0毫秒