前面提到,"for-each"是通过Iterator实现的,如果我们自己写了一个集合类,也想使该类支持Iterator遍历,则我们需要做以下事情: a. 继承Iterable接口,重写iterator(),用以返回自定义Iterator对象 b. 实现自定义Iterator类,重写hasNext方法和next方法 例如:
/**
* MyList.java
**/import java.util.*;publicclassMyList<T>implementsIterable<T>{
List<T> l =newArrayList<>();voidadd(T e){
System.out.println("add function");
l.add(e);}//重写iterator方法,返回一个Iterator对象@Overridepublic Iterator<T>iterator(){
Iterator<T> iterator =newMyIterator<>(0);return iterator;}//用内部类实现了自定义迭代器MyIterator,并继承Iterator<T>接口publicclassMyIterator<T>implementsIterator<T>{publicint index;MyIterator(int index){this.index = index;}//重写hasNext方法@OverridepublicbooleanhasNext(){return(index < l.size());}//重写next方法@Overridepublic T next(){
T ret =(T) l.get(index);
index ++;return ret;}}}*************************************************************************/**
* 主函数
**/import java.util.*;publicclassIteratorPractice{publicstaticvoidmain(String[] args){
MyList<String> mList =newMyList<>();
mList.add("gong");
mList.add("hao");//实现了用for-each来遍历自定义类for(String s : mList){
System.out.println(s);}}}
Java集合-3(Iterator)Java所有集合都可以用“for-each”来遍历,而"for-each"遍历实际是由迭代器(Iterator)实现的。下面以Set为例,分别使用Iterator和“for-each”来进行遍历。import java.util.*;public class IteratorPractice{ public static void main(Str...