初识JAVA中Iterator和foreach

艾琳使者 2016-09-18 11:22:48
Iterator和foreach
各位大神,小弟初学JAVA最近在学习集合的时候对于Iterator和foreach遍历集合有一些想法,希望大神们指点一下。

Iterator 迭代器 是接口 可通过Iterator 引用指向实现了Iterator接口的具体类的对象,即通过多态降低了系统的耦合度 。
主要方法:
boolean hasNext()

E
next()
返回迭代的下一个元素。
void remove()
从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

遍历过程:
通过hasNext()从集合的第一个位置前面开始遍历,确认是否有下一个数据,如果有则返回true 并且可调用next()方法,则返回该数据。
优点:
如果是顺序访问时Iterator效率较高,试用于List集合。
缺点:
遍历Map集合,由于Map集合中的数据是成对出现<key,value>的,在遍历key同时, 调用get(key)时会出现oSuchElementException,是因为Iterator遍历不是从第一个元素开始和最后一个元素结束的,所以在遍历是会出现问题,所以Iterator不适合遍历Map集合。
======================================分割线====================================================
For(<T>: collection<T>)each 其底层实现原理是就是Iterator
即:如果一个类实现了Iterable<T>接口,该类对象的集合就可以使用foreach语句进行遍历 。
遍历过程:
从集合中逐一的取出元素 进行操作
优点:
试用于全部集合。
在遍历Map集合中的key的同时调用get(key) 不会出现异常。
...全文
229 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_08_06_02 2016-09-19
  • 打赏
  • 举报
回复
艾琳使者 2016-09-18
  • 打赏
  • 举报
回复
引用 1 楼 解开者的回复:
对Map实例调用entrySet方法之后就可以遍历了 操作Entry视图也能减少调用get方法获取元素的开销
谢谢您的指教 小白在这里受教了
艾琳使者 2016-09-18
  • 打赏
  • 举报
回复
谢谢您的指教 小白在这里受教了
解开者 2016-09-18
  • 打赏
  • 举报
回复
对Map实例调用entrySet方法之后就可以遍历了 操作Entry视图也能减少调用get方法获取元素的开销

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧