Java学习笔记之Collection、Iterable和Iterator

倖福魔咒の 提交于 2019-11-26 23:00:34

---------------------------------------------the brilliant division line--------------------------------------------------------------------------------------

“为什么说实现了Iterable接口的集合必须提供一个称为iterator的方法,该方法返回一个Iterator类型的对象。”

没有别的原因,原因只有一个,就是因为Iterable接口的定义如下:

 

1 package java.lang;
2 
3 import java.util.Iterator;
4 
5 
6 public interface Iterable<T>
7 {
8         Iterator<T> iterator();
9 }

 既然这么定义了,那么就必须这么实现。

 

---------------------------------------------the brilliant division line--------------------------------------------------------------------------------------

Collection接口定义如下:

 1 public interface Collection<T> extends Iterable<T>
 2 {
 3         int size();
 4         boolean isEmpty();
 5         void clear();
 6         boolean contains();
 7         boolean add(T x);
 8         boolean remove(T x);
 9         java.util.Iterator<T> iterator();
10 }

Iterable接口定义如下:

1 public interface Iterable<T>
2 {
3         Iterator<T> iterator();
4 }

Iterator接口定义如下:

1 public interface Iterator<E>
2 {
3         boolean hasNext();
4         E next();
5         void remove();
6 }

这三者的关系是:Collection接口扩展了(extends)Iterable接口,Iterable接口定义中只包含了一个返回类型为Iterator<T>的方法iterator,接口Iterator的定义是由hasNext、next、remove三个方法组成的。

查看Collection定义和Iterator定义可发现,Collection有remove方法,Iterator也有remove方法,那么问题出现了,二者的remove方法有何区别呢?我们更倾向于使用谁的remove方法呢?为什么?

待续。。。。。。。。。。。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!