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();}// InnerIteratorprivate 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
abcdef----------------------------------------abcdef
