过程:
- 类IterableClass 实现 Iterable接口
words数组And that is how we know the Earth to be banana-shaped.
main:验证foreach方法
个人实现:
package thinking;
import java.util.Iterator;
public class IterableClass implements Iterable<String> {
private static String [] words = "And that is how we know the Earth to be banana-shaped.".split(" ");
public static void main(String[] args) {
// TODO Auto-generated method stub
for(String s : words){
System.out.println(s);
}
}
@Override
//未写出
public Iterator<String> iterator() {
return new Iterator<String>() {
private int index = 0;
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return index>words.length;
}
@Override
public String next() {
// TODO Auto-generated method stub
return words[index++];
}
} ;
}
}
原书实现:
package thinkingjava;
import java.util.Iterator;
public class IterableClass implements Iterable<String> {
protected String [] words = ("And that is how we know the Earth to be banana-shaped.").split(" ");
@Override
public Iterator<String> iterator() {
return new Iterator<String>() {
private int index = 0;
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return index<words.length;
}
@Override
public String next() {
// TODO Auto-generated method stub
return words[index++];
}
public void remove(){
throw new UnsupportedOperationException();
}
} ;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for(String s : new IterableClass()){
System.out.print(s+" ");
}
}
}
比较:
1、hasNext条件写反
2、完美避开了自己实现的iterator方法 :)))