-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()代替 –