今天开始我们来聊一聊集合的那些事。
说到集合,
最最最常用的方法估计就是遍历了。
那我们就从遍历来开始深入集合。
准备数据
先新建一个ArrayList,本文中就直接采用了直接add字符串的方式,实际开发中,实体类会复杂的多。
List<String> list =newArrayList<>();
list.add("a");
list.add("b");
list.add("c");
开始遍历
fori方式遍历
代码如下:
for(inti =0; i < list.size(); i++) {
System.out.println(list.get(i));
}
使用javap可以看到for翻译成了goto , 其他size,get等方法照旧:javap -v -p类名
for(T t:list)方式遍历
代码如下:
for(Strings : 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]:
关注小编还会继续分享相关文章,需要java、python学习视频资料及路线的可以加微信:15513541542(记得备注888,我就知道是你了)
![](https://img.haomeiwen.com/i15837836/3b26c62775792106.jpg)
![](https://img.haomeiwen.com/i15837836/2d319fe5fedcc5d9.jpg)
![](https://img.haomeiwen.com/i15837836/f90ee0c752a4d4d1.jpg)
网友评论