-1
所以基本上我試圖編寫自己的自定義迭代器來打印ArrayList的每第二個數字。我使用從0到100的整數填充arraylist。自定義迭代器打印ArrayList的每個第二個成員
但不知怎的,它仍然沒有使用我的自定義迭代器,奇怪地打印出我的arrayList中的每一個int。
我接近這個錯誤的方式嗎? 代碼:
public class IteratorTesting implements Iterable{
ArrayList<Integer> rand;
public IteratorTesting(){
rand = new ArrayList<>();
}
public ArrayList<Integer> getRand(){
return rand;
}
public int getSize(){
return rand.size();
}
@Override
public Iterator iterator() {
return new MyIterator();
}
public class MyIterator implements Iterator<Object>{
int currentIndex=0;
@Override
public boolean hasNext() {
if(currentIndex<rand.size()){
return true;
}else{
return false;
}
}
@Override
public Object next() {
return rand.get(currentIndex+=2);
}
}
public static void main(String[] args) {
IteratorTesting name = new IteratorTesting();
for (int i = 0; i < 100; i++) {
name.getRand().add(i);
}
Iterator it = name.getRand().iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
輸出:
run:
0
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
但我重寫了迭代器對象。 @Override public Iterator iterator(){ return new MyIterator(); } – Frisco
不,你沒有。你已經在'IteratorTesting'類中覆蓋了它,但不是在它內部的'ArrayList'對象上。 –
name.iterator()代替 –