java学习|图说集合(一)list循环背后的故事

今天开始我们来聊一聊集合的那些事。

说到集合,

最最最常用的方法估计就是遍历了。

那我们就从遍历来开始深入集合。


准备数据

先新建一个ArrayList,本文中就直接采用了直接add字符串的方式,实际开发中,实体类会复杂的多。

        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");

开始遍历

fori方式遍历

代码如下:

 for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

使用javap可以看到for翻译成了goto , 其他size,get等方法照旧: javap -v -p 类名


for(T t:list)方式遍历

代码如下:

        for (String s : list) {
            System.out.println(s);
        }

使用javap可以看到

for(T t :list) 实际上调用的是list的 iterator,通过hasNext 和next 来实现遍历的。也就是和下面代码的效果是一样的:

 


foreach 方式遍历

代码如下:

list.forEach(x-> System.out.println(x));

只有一行代码就可以了,但实际上,这是一个语法糖,我们点进去forEach可以看到:

再根据我们上面的分析,等同于调用iterator进行遍历。


总结

在java世界中,为了方便开发,jdk给我们提供了很多便利的方法。但追根到底,会有种百川入海的感觉,最终调用的还是那几个基础方法。如上文所述,foreach 实际上调用是的 for(T t :list)。 for(T t :list)实际上调用的是iterator的next。如果我们再跟踪下去会发现,arraylist 实际上就是一个Object[] elementData 我们调用iterator.next 实际上就是用的elementData[i]: 

—END—

前期回顾:

Java学习|图说String(一):String的存储方式

java学习|图说String(二):基于byte数组的String方法调用

java学习|图说String(三)String中'+'和StringBuilder的区别

QQ群:661749608

微信群请点击公众号菜单进微信群

我们哦~

文字: 微笑的小小刀

排版:花音

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值