使用for循环还是foreach循环?
很多时候我们很自然的认为,for循环的时候使用foreach和原来的for循环用下标的方式遍历是相同的。
而且因为foreach循环写法简单,很容易理解,而且少去了很多麻烦的变量,所以估计在学会使用foreach循环之后,很多人就没有用过下标的循环了。
但是你知道两者其实还是有很大区别的,在不同的情况下面应该使用不同的方式去循环。
否则会导致循环的时间变长。数据量小的时候当然没有什么关系,但是一旦数据量大了之后问题就会暴露出来了。
首先我们要知道的时候foreach循环是利用迭代器的使用循环。那么什么是迭代器呢?
提供一种方法访问一个容器对象的各个元素,同时又无需暴露该对象的内部细节,这是设计模式中的一种解释。
for(int i:list)
for(Iterator<Integer> i=list.iterator();i.hasNext();)
上面两种写法意思其实是一样的
其实就是利用了hasNext方法实现了foreach循环
知道了什么是foreach循环,那么什么时候去使用,也就好解释了。
然后需要知道的是什么是RandomAccess接口,ArrayList数组实现了这个接口,这个接口是随机存取接口。
实现了这个接口就表示内部的存放是随机的,但是foreach循环需要需要使用next方法获取下一个元素,而随机存放的话就需要强制建立前后的联系。
所以在循环ArrayList的时候使用下标去循环会比foreach循环要快。
下面说List<>,对于这个链表类似的有很多数据结构,LinkedList什么的,很多,他们存放本身就是有联系的,所以对于他们来说,next方法很容易就找到下一个元素的了,所以循环的时候使用foreach很快。
具体的代码就不贴了,有兴趣的人可以试试大数据量的时候,时间上的差距其实是很明显的。
总结一下,如果一个容器是随机存放的话,使用带有下标的循环,如果不是可以使用foreach循环。
不要偷懒哦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?