ArrrayList 和 LinkedList 查询效率区别举例说明

1:在大数据遍历(例如for循环)处理时,ArrayList 查询效率明显由于LinkList。

下面例子中:

当 n = 100000 下面程序输出linkM=6s
当 n = 200000 下面程序输出linkM=27s
当 n = 300000 下面程序输出linkM=70s 当 n = 400000 下面程序输出link=132s

而当n= 800000 下面程序输出 linkM=1461s,接近25分钟

表明LinkList在结合 一重for循环 查询时间复杂度O(n^2),即n增大为其原来两倍时,时间增加为原来的 n^2(n的平方)和n^3(n的立方)之间。从上面的例子可以看出,当n由100000变为200000时,时间由6变为27,增加了4倍多。
 (1)LinkList查询举例说明 
  

public class ListTest {
    public static void main(String[] args) {
       
            List linkList = new LinkedList<>();
            for (int i = 0; i < n; i++) {
                linkList.add(i);
            }

            long linkS = (new Date()).getTime();
            int total = 0;
            for (int i = 0; i <n ; i++) {
                total+=total+linkList.get(i);
            }
            long linkE = (new Date()).getTime();
            long linkM = linkE -linkS;
            System.out.println("linkM="+linkM/1000);
    }
 
  
2:ArrayList查询举例说明
因为
(1)当n=800000时,arrayM=0.009s,即9ms。
(2)当n=8000000时,arrayM=0.0021s,即21ms。
 
  
 
  
public class ListTest {
    public static void main(String[] args) {
            List intList = new ArrayList();
            for (int i = 0; i < n; i++) {
                intList.add(i);
            }
            long s = (new Date()).getTime();
            int total2 = 0;
            for (int i = 0; i <n ; i++) {
                total2+=total2+intList.get(i);
            }
            long e = (new Date()).getTime();
            long m = e -s;
            System.out.println("arrayM="+m);
}
}

 
  

你可能感兴趣的:(java基础)