Iterator是一种抽象的数据访问模型。使用Iterator模式进行迭代的好处有:

    • 对任何集合都采用同一种访问模型;
    • 调用者对集合内部结构一无所知;
    • 集合类返回的Iterator对象知道如何迭代。

    Java提供了标准的迭代器模型,即集合类实现java.util.Iterable接口,返回java.util.Iterator实例。

    1. import java.util.*;
    2. public class Main {
    3. public static void main(String[] args) {
    4. ReverseList<String> rlist = new ReverseList<>();
    5. rlist.add("Apple");
    6. rlist.add("Orange");
    7. rlist.add("Pear");
    8. for (String s : rlist) {
    9. System.out.println(s);
    10. }
    11. }
    12. }
    13. class ReverseList<T> implements Iterable<T> {
    14. private List<T> list = new ArrayList<>();
    15. public void add(T t) {
    16. list.add(t);
    17. }
    18. @Override
    19. public Iterator<T> iterator() {
    20. return new ReverseIterator(list.size());
    21. }
    22. class ReverseIterator implements Iterator<T> {
    23. int index;
    24. ReverseIterator(int index) {
    25. this.index = index;
    26. }
    27. @Override
    28. public boolean hasNext() {
    29. return index > 0;
    30. }
    31. @Override
    32. public T next() {
    33. index--;
    34. return ReverseList.this.list.get(index);
    35. }
    36. }
    37. }