Iterator接口和Iterable接口
下面是我自己关于两个接口的一些总结,若有不严谨或不准确的地方请指出,谢谢!
Iterator接口
Iterator接口内的方法:hasNext() ,next(),remove()
理解:某类实现这个接口的话,需要重写实现上述功能,来实现自定义迭代器的基础功能
Iterable接口
Iterable接口内的方法:iterator(),forEach(),spliterator()
理解:某类实现这个接口的话,就代表该接口可以用迭代器迭代(迭代规则可以在自定义迭代器内实现),
iterator()方法返回一个迭代器类,这个类就是自己写的实现了Iterator接口的迭代器类
总结
迭代器接口Iterator定义了一个迭代器需要具备的基本要素,可迭代接口Iterable规定了:“如果你可迭代,则你就要1.能获取迭代器2.能foreach操作等等”
举例
1.层级架构:ArrayList类实现List接口,List接口实现Collection接口,Collection接口实现Iterable接口
2.List接口则继承了Iterable接口的Iterator iterator()方法,List接口内的该方法规定了任意实现类及其子类都要有获取迭代器的方法
3.ArrayList类实现了List接口,进一步规定了Iterator iterator()方法返回的是一个Itr类,这个类就是自定义的迭代类,Itr类是ArrayList的内部类,实现了Iterator接口。(P.S.此处是多态运用,iterator()返回值类型是Iterator接口,所以实际返回任意其实现类也可以,Itr类就是Iterator的实现类)规定了ArrayList迭代器的几个基本方法(包括hasNext() ,next(),remove()三个必须重写的方法)