Java数组链表效率,Java数组和链表三种遍历效率对⽐数组结构
⽰例代码:
/*数组结构的三种循环遍历效率对⽐*/
@org.junit.Test
public void test13(){
Listlist = new ArrayList<>(10000000);
for(int i=0;i<1000;i++){
list.add(i);
}
/*普通for循环*/
long a = System.currentTimeMillis();
int size = list.size();
for(int i=0;i
以下对⽐结果为⼤概率事件,仅供参考
1000数据量下耗时结果:迭代器耗时<=增强for循环耗时普通for循环耗时:12--ms
增强for循环耗时:7--ms
迭代器耗时:6--ms
10000数据量下耗时结果:迭代器耗时普通for循环耗时:67--ms
增强for循环耗时:53--ms
迭代器耗时:47--ms
数组和链表10W数据量下耗时结果:迭代器耗时普通for循环耗时:540--ms
增强for循环耗时:865--ms
迭代器耗时:439--ms
30W数据量下耗时结果:迭代器耗时<=增强for循环耗时普通for循环耗时:1855--ms
增强for循环耗时:1281--ms
迭代器耗时:1224--ms
50W数据量下耗时结果:迭代器耗时<=增强for循环耗时普通for循环耗时:2844--ms
增强for循环耗时:2245--ms
迭代器耗时:2215--ms
100W数据量下耗时结果:迭代器耗时普通for循环耗时:5149--ms
增强for循环耗时:4785--ms
迭代器耗时:4417--ms
500W数据量下耗时结果:这三种⽅式基本不相上下
普通for循环耗时:20698--ms
增强for循环耗时:20814--ms
迭代器耗时:20963--ms
1000W数据量下耗时结果:迭代器耗时普通for循环耗时:42957--ms
增强for循环耗时:39645--ms
迭代器耗时:39143--ms
链表结构
⽰例代码:
/*链表结构的三种循环遍历效率对⽐*/
@org.junit.Test
public void test14(){
LinkedListlist = new LinkedList<>();
for(int i=0;i<1000000;i++){
list.add(i);
}
/*普通for循环*/
long a = System.currentTimeMillis();
int size = list.size();
for(int i=0;i
以下对⽐结果为⼤概率事件,仅供参考
1000数据量下耗时结果:增强for循环耗时<=迭代器耗时普通for循环耗时:17--ms
增强for循环耗时:5--ms
迭代器耗时:7--ms
10000数据量下耗时结果:迭代器耗时<=增强for循环耗时普通for循环耗时:115--ms 增强for循环耗时:50--ms
迭代器耗时:43--ms
10W数据量下耗时结果:迭代器耗时<=普通for循环耗时普通for循环耗时:5350--ms
增强for循环耗时:403--ms
迭代器耗时:406--ms
30W数据量下耗时结果:增强for循环耗时普通for循环耗时:54948--ms
增强for循环耗时:1261--ms
迭代器耗时:1272--ms
50W数据量下耗时结果:迭代器耗时<=增强for循环耗时普通for循环耗时:327258--ms 增强for循环耗时:1936--ms
迭代器耗时:1986--ms
总结:
对于数组结构遍历1w以下数据量,三种遍历⽅式差别不⼤,1w以上就要根据具体数量选取合适的⽅式了,总体来说迭代器和增强for循环都是要优于普通for循环的
对于遍历链表结构,不管数据量多少,也不推荐使⽤普通for循环,普通for循环性能太慢了,迭代器和增强for循环性能相差不⼤,可以根据实际场景选⽤