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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值