数组结构

示例代码:

/*数组结构的三种循环遍历效率对比*/

@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循环性能相差不大,可以根据实际场景选用