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

2083

被折叠的 条评论
为什么被折叠?



