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) 不会出现异常。
各位大神,小弟初学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) 不会出现异常。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货