0%

Iterator

Iterator


定义

提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。

需求

对数据的集合(不是数学上的集合)进行遍历

解决

  • 通过下标访问集合元素
  • 集合自身提供一个Iterator

优势

不需要知道集合内部的结构是怎样的

栗子

java中的聚合对象如List都可以通过Iterator遍历

For Each

简洁的使用Iterator遍历的一种方法

编写Iterator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.util.Arrays;
import java.util.Iterator;

public class ReverseArrayCollection<T> implements Iterable<T> {
private T[] array;

public ReverseArrayCollection(T... obj) {
this.array = Arrays.copyOfRange(obj, 0, obj.length);
}


@Override
public Iterator<T> iterator() {
return new ReverseIterator();
}

class ReverseIterator implements Iterator<T>{
private int index;

public ReverseIterator() {
this.index = ReverseArrayCollection.this.array.length;
}


@Override
public boolean hasNext() {
return index > 0;
}

@Override
public T next() {
index--;
return array[index];
}
}
}