我看书学习java集合时经常看到 iterator迭代器,可以通过它来遍历集合,删除元素,如果是有序集合List还可以添加元素。
以前学集合的时候只是简单的学了几个方法add set remove get等等。在做项目的时候也完全够用。这几个方法和迭代器的方法是不是重复了
那么,问题来了,什么时候需要用到迭代器?这个迭代器需要熟练掌握吗?
不知道楼主是否看到阿里 Java 开发规范,里面就定义了迭代器的一种典型场景:
就是需要对集合遍历且遍历过程中需要修改集合内容时,就必须使用迭代器,而不能直接操作集合,否则会导致 ConcurrentModifiedException 。
迭代器没有这种限制
楼主说的没错,掌握基本用法就够了,常规的集合基本方法就够用了,对于这种边遍历边删除的场景用迭代器。
集合必须是有限的,而迭代器则不必。
比如说,让你迭代所有的正整数,你可以1 2 3 4 5 ... 一直迭代下去。
但是你不能把所有的整数装入一个集合。
即便遍历的对象不是无限多的,比如说,我让你找出csdn问答中最新的n条提问来。
你如果用集合,那么首先要把csdn所有的问题都放入一个集合,虽然这是有限的,但是也是不经济的。
而用迭代器,我只要从最新的页面开始,一条一条给你,直到给你n条,就结束。
迭代器的作用在于,将遍历的逻辑(迭代器)和对每一个迭代对象(迭代器调用代码)分开,使得遍历可以被重用。如果没有迭代器,要么代码调用者必须自己一遍一遍写遍历的代码,有时候这个过程会很麻烦,比如遍历文件系统,或者取一个数列的前n项。要么让遍历的结果装入一个集合并返回,但是这么做的问题是,我们并不知道需要返回多少项,比如求比1000小的素数的和,你没法将需要返回多少项作为参数传进去,如果你把遍历后判断这个素数是不是小于1000的代码写在遍历中,又使得调用和被调用代码混合在一起了。
至于要不要熟练掌握,这个就不好说了。因为不是每个人都会成为专业的程序员,大多数人只是应付个考试,或者就算当程序员,也就是干个几天就转行了。或者说他的能力和智力根本不配当程序员,就算学会迭代器,还有别的他也学不会。你和他说要熟练掌握这个那个,不是扯么。