sjddhs
日落冬至
2019-10-26 19:09
采纳率: 21.9%
浏览 1.5k
已采纳

java 集合什么情况需要用到迭代器

我看书学习java集合时经常看到 iterator迭代器,可以通过它来遍历集合,删除元素,如果是有序集合List还可以添加元素。

以前学集合的时候只是简单的学了几个方法add set remove get等等。在做项目的时候也完全够用。这几个方法和迭代器的方法是不是重复了

那么,问题来了,什么时候需要用到迭代器?这个迭代器需要熟练掌握吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • wojiushiwo945you
    毕小宝 2019-10-27 06:57
    已采纳

    不知道楼主是否看到阿里 Java 开发规范,里面就定义了迭代器的一种典型场景:

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

    楼主说的没错,掌握基本用法就够了,常规的集合基本方法就够用了,对于这种边遍历边删除的场景用迭代器。

    点赞 评论
  • caozhy

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

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

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

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

    点赞 3 评论

相关推荐