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

来源:互联网 发布:怎么减少网络延迟 编辑:程序博客网 时间:2024/06/07 03:32

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<Integer> 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<Integer> intList = new ArrayList<Integer>();            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);
}
}


0 0
原创粉丝点击