Iterator概述
玩具代码案例 - 字符串的迭代器
String默认是不支持迭代器的,即也不能支持 for each的语法。这里通过一个StringIterable来封装一个支持迭代器的字符串,实现了Iterable接口的类就能支持for each
迭代器类型
StringIterable
package online.javabook.gof.behavioral.patterns3.iterator.characters;
import java.util.Iterator;
public class StringIterable implements Iterable<Character> {
private String original;
public StringIterable(String original) {
this.original = original;
}
public Iterator<Character> iterator() {
return new InnerIterator();
}
// InnerIterator
private class InnerIterator implements Iterator<Character> {
private int index;
public boolean hasNext() {
return index < original.length();
}
public Character next() {
Character c = original.charAt(index);
index++;
return c;
}
public void remove() {}
}
}
控制台输出
Main
package online.javabook.gof.behavioral.patterns3.iterator.characters.app;
import online.javabook.gof.behavioral.patterns3.iterator.characters.StringIterable;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
StringIterable iterable = new StringIterable("abcdef");
Iterator<Character> iterator = iterable.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("----------------------------------------");
for(Character character : iterable) {
System.out.println(character);
}
}
}
Console
a
b
c
d
e
f
----------------------------------------
a
b
c
d
e
f