一、Iterator的好处--面向接口编程
更广泛的使用范围。
Iterator迭代器针对Collection设计,但get(int index)、remove(int index)等一类的方法并不是Collection接口的标准,也就是说,对ArrayList,即List的实现,你能使用这些方法,但对于Collection的其他实现,如Set等,你可能就必须使用Iterator了。
更好的异常控制。
Iterator迭代器允许调用者在在迭代期间对迭代器所指向的Collection进行remove等操作,而对于这种情况,一般的for(int i = 0; i < Collection.size(); i++)遍历方式可能就会出现IndexOutOfBoundsException。
更佳的性能。
对于数组形式的Collection,例如问题中的ArrayList,两种遍历方式可认为性能几乎一致;但对于链表形式的Collection,例如同样是List实现的LinkedList,一般的for(int i = 0; i < Collection.size(); i++)遍历方式可能是噩梦,因为在for loop的内部,执行get(int index)、remove(int index)等一类的方法时需要再次进行部分遍历。即Iterator会从一个节点直接通过next指针获得下一个节点,遍历时间复杂度始终是O(n),而一般的for loop的时间复杂度在链表的情况下会上升至O(n^2),n很大时,性能消耗非常恐怖。
另外补充两点:
对于for循环,我们还有一种叫做所谓for each的写法
最后
以上就是小巧夏天最近收集整理的关于java采用iterator的好处_java 数据结构(4) Iterator的全部内容,更多相关java采用iterator的好处_java内容请搜索靠谱客的其他文章。
发表评论 取消回复