有关Iterator的一个问题没懂。

lq171599 2018-08-19 12:15:38

这里面c.iterator();是直接意思,没看懂是直接调用接口?
...全文
371 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SwTesting 2018-08-21
  • 打赏
  • 举报
回复
1、c是ArrayList类的实例对象,ArrayList这个类里面有一个iterator()方法,这个iterator()方法返回值类型是Iterator<E>。
2、为什么要调iterator()方法呢,主要是为了输出ArrayList这个集合中的值,输出集合的方法,一般是用foreach语句或者调用iterator()这个方法。
3、iterator()方法返回值类型是Iterator<E>,所以对象类型Iterator,这个Iterator<E>接口里面有hasNext()方法和forEachRemaining方法。这时就可以调用Iterator<E>的这两个方法,输出集合内容了。
lyx_yixiao 2018-08-21
  • 打赏
  • 举报
回复
iterator() 是集合的迭代器,是一个方法,直接调用的
ccs12343 2018-08-20
  • 打赏
  • 举报
回复
去看java api Collection类里的 iterator方法

Iterator<E> iterator()

返回在此 collection 的元素上进行迭代的迭代器。关于元素返回的顺序没有任何保证(除非此 collection 是某个能提供保证顺序的类实例)。

指定者:
接口 Iterable<E> 中的 iterator

返回:
在此 collection 的元素上进行迭代的 Iterator
希望采纳

not_found_404_ 2018-08-20
  • 打赏
  • 举报
回复
c.iterator(); 是java中迭代器的意思。。。不是直接的意思
都已到中年 2018-08-20
  • 打赏
  • 举报
回复
迭代器(Iterator)

  迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。

  Java中的Iterator功能比较简单,并且只能单向移动:

  (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

  (2) 使用next()获得序列中的下一个元素。

  (3) 使用hasNext()检查序列中是否还有元素。

  (4) 使用remove()将迭代器新返回的元素删除。

  Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。



迭代器应用:

复制代码
list l = new ArrayList();
l.add("aa");
l.add("bb");
l.add("cc");
for (Iterator iter = l.iterator(); iter.hasNext();) {
String str = (String)iter.next();
System.out.println(str);
}
/*迭代器用于while循环
Iterator iter = l.iterator();
while(iter.hasNext()){
String str = (String) iter.next();
System.out.println(str);
}
*/
复制代码




Iterator的接口定义:



public interface Iterator {
  boolean hasNext();
  Object next();
  void remove();
}


使用: Object next():返回迭代器刚越过的元素的引用,返回值是Object,需要强制转换成自己需要的类型

    boolean hasNext():判断容器内是否还有可供访问的元素

    void remove():删除迭代器刚越过的元素

迭代使用方法:(迭代其实可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类)

for(Iterator it = c.iterator(); it.hasNext(); ) {
  Object o = it.next();
   //do something
}
verejava 2018-08-20
  • 打赏
  • 举报
回复
Java 集合 之 Iterator 迭代器

http://www.verejava.com/?id=17159874583439
whyuf_go 2018-08-20
  • 打赏
  • 举报
回复
就是把所有实现Collection接口的类可以转化成一个迭代器(说白了实质就是一个list一样的存在),你可以直接使用Iterator的方法去操作这个类.
比如说 list set等 .
这两个都可以直接转化成iterator,然后使用 remove 或者next 方法去操作.
但是值得注意的是 如果转化为iterator后,对于之前的list 或者set是不能进行操作的.
如果进行操作会报错的!
  • 打赏
  • 举报
回复
将c集合的数据放入了迭代器中,,转换成了迭代器的数据类型,,然后可以遍历出来。。
Surrin1999 2018-08-20
  • 打赏
  • 举报
回复
我来解答一下吧

楼主 你点进去Iterator,会发现里面是空的,因为你看到的是Collection接口中的东西,此时还没实现

那么 真正的实现在哪里呢?废话不多说, 以你这个例子为例 点开ArrayList类的源码 找到iterator方法

看到new Itr()了吧 继续跟踪 点进去



可以看到 调用接口真正调用的方法的是ArrayList类中的iterator()方法 真正返回的实例是ArrayList类中的一个内部类Itr的实例


纯手打 总结不易 还望采纳~
沁海棠 2018-08-19
  • 打赏
  • 举报
回复
不明白你说什么, c.iterator(), 返回的是 ArrayList 自己的一个内部类, 这个内部类实现了Iterator 接口

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧