File tree Expand file tree Collapse file tree 1 file changed +22
-6
lines changed Expand file tree Collapse file tree 1 file changed +22
-6
lines changed Original file line number Diff line number Diff line change @@ -19,21 +19,37 @@ public interface Iterable<T> {
19
19
Iterator.java 实现
20
20
``` Java
21
21
public interface Iterator <E> {
22
- boolean hasNext ();
23
- E next ();
22
+ boolean hasNext ();
23
+ E next ();
24
24
}
25
25
```
26
26
ArrayList.java 实现 Iterable接口
27
27
``` Java
28
- @Override
29
- public Iterator<T > iterator() {
30
- return new ArrayListIterator ();
28
+ @Override
29
+ public Iterator<T > iterator() {
30
+ return new ArrayListIterator ();
31
31
}
32
32
```
33
33
34
34
ArrayListIterator.java 实现
35
35
```
36
+ public class ArrayListIterator {
37
+ int cursor;
38
+ int lastRet = -1;
36
39
40
+ public boolean hasNext() {
41
+ return cursor != size;
42
+ }
43
+
44
+ public E next() {
45
+ int i = cursor;
46
+ if (i >= size)
47
+ throw new NoSuchElementException();
48
+ Object[] elementData = ArrayList.this.elementData;
49
+ cursor = i + 1;
50
+ return (E) elementData[lastRet = i];
51
+ }
52
+ }
37
53
```
38
54
39
- 为了减少类文件和易于维护,我们通常把ArrayListIterator.java作为ArrayList的内部类,或者在ArrayList的iterator方法中世界采用匿名内部类,这里我们使用的内部类 。
55
+ 为了减少类文件和易于维护,我们通常把ArrayListIterator.java作为ArrayList的内部类,或者在ArrayList的iterator方法中世界采用匿名内部类,这里我们使用的外部类 。
You can’t perform that action at this time.
0 commit comments