2017-05-28 4 views
-1

これは基本的に私自身のカスタムイテレータを作成してArrayListの2番目の番号を印刷しようとしています。私はarraylistに0から100までの整数を設定しました。ArrayListのすべての2番目のメンバを印刷するカスタムイテレータ

しかし、どういうわけか私のカスタムIteratorを使用していないと、私の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 

答えて

3

このライン

Iterator it = name.getRand().iterator(); 

では、あなたの代わりにカスタムイテレータの、ArrayListためIteratorをフェッチしてきました。したがって、あなたは通常の方法でリストを反復しているだけです。

+0

しかし、私はIteratorオブジェクトをオーバーライドします。 @Override public Iterator iterator(){ return新しいMyIterator(); } – Frisco

+1

いいえ、あなたはありません。 'IteratorTesting'クラスでオーバーライドしましたが、その内部の' ArrayList'オブジェクトではオーバーライドしていません。 –

+0

name.iterator()代わりに –

関連する問題