自从知道了增强for循环,本人在写java代码遍历集合时使用的几乎都是这种方法,但有时会出现一些意料之外的错误。因此在 上搜集了几种集合遍历的方式,以应对各种需要的场景。
遍历方式
假设需要遍历的集合为:
List<String> listNames = new ArrayList<>();
1. 经典循环方式
最简单且容易理解的方式,多数语言都使用这种方式遍历集合
2. 加强for循环
本人最常用的方式,在编译过程会将其转化为 “使用下标遍历” 的方式,在字节码层面其实等价于第一种方式,效率上也没有太大差别。好处主要就是代码简洁。
3. 迭代器
由于经典循环方式的限制,创建了使用迭代器的方式,这种方式允许我们迭代各种集合。因此你可以看到Collection接口定义了每个集合必须实现iterator()方法
对于其他集合也同理:
Set:
Map:
遇到的错误
开篇提到使用增强for循环的遍历模式可能会遇到错误,那就是循环中删除:
如果这样写,你会遇到异常。刚碰到的时候你可能会感觉很困惑,但其实转换成经典for循环的方式就很好理解了:删除元素导致数组下标被改变了。
实际上正确的经典for循环可以是这样的:
只需要修正数组下标就可以了。
更简单也更常用的方法是使用迭代器的删除:
迭代器会自动修正数组。一般写代码需要删除时我会选择这种方式。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!