• 阿里Java开发规范:

就是需要对集合遍历且遍历过程中需要修改集合内容时,就必须使用迭代器,而不能直接操作集合,否则会导致ConcurrentModifiedException 。迭代器没有这种限制。

  • 集合容量:

集合必须是有限的,而迭代器则不必。 比如说,让你迭代所有的正整数,你可以1 2 3 4 5 ... 一直迭代下去。
但是你不能把所有的整数装入一个集合。

即便遍历的对象不是无限多的,比如说,我让你找出csdn问答中最新的n条提问来。
你如果用集合,那么首先要把csdn所有的问题都放入一个集合,虽然这是有限的,但是也是不经济的。
而用迭代器,我只要从最新的页面开始,一条一条给你,直到给你n条,就结束。

迭代器的作用在于,将遍历的逻辑(迭代器)和对每一个迭代对象(迭代器调用代码)分开,使得遍历可以被重用。如果没有迭代器,要么代码调用者必须自己一遍一遍写遍历的代码,有时候这个过程会很麻烦,比如遍历文件系统,或者取一个数列的前n项。要么让遍历的结果装入一个集合并返回,但是这么做的问题是,我们并不知道需要返回多少项,比如求比1000小的素数的和,你没法将需要返回多少项作为参数传进去,如果你把遍历后判断这个素数是不是小于1000的代码写在遍历中,又使得调用和被调用代码混合在一起了。

至于要不要熟练掌握,这个就不好说了。因为不是每个人都会成为专业的程序员,大多数人只是应付个考试,或者就算当程序员,也就是干个几天就转行了。或者说他的能力和智力根本不配当程序员,就算学会迭代器,还有别的他也学不会。你和他说要熟练掌握这个那个,不是扯么。

  • 集合无索引:

set集合是无序的,使用for遍历不了。这时需要迭代器来遍历,把集合中所有的元素都找出来。

标签: none