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

本文通过具体实验对比了ArrayList与LinkList在大数据遍历时的查询效率,结果显示ArrayList的查询效率远高于LinkList,尤其是在数据量较大时。文章提供了两种数据结构在不同数据规模下的查询时间,展示了LinkList的时间复杂度随数据量增长呈指数级上升。

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);
}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值