2012-03-25 12 views
0

私はHColumn<ColName, ColValue>のリスト(ArrayList、infact)を持っています。今度は、iterator()を実装して、このコレクションを反復処理して、繰り返しごとに対応するColValueを各HColumnから出力するようにしたいと考えています。このようなイテレータを実装していますか?

このオブジェクトHColumn<ColName, ColValue>は、私のJavaアプリケーションで使用される外部ライブラリで定義されています。

可能な場合はどうすればいいですか?

現在のところ、このような繰り返しを作成するために、私は新しいリストを作成していましたが、効率は&という点では良いことではないと思われる対応するColValuesが含まれています。

答えて

4

@jordeuによって示唆されるように:

public class IteratorColValueDecorator implements Iterator<ColValue> { 
     private Iterator<HColumn<ColName, ColValue>> original; 
     //constructor taking the original iterator 
     public ColValue next() { 
      return original.next().getValue(); 
     } 
     //others simply delegating 
} 

それとも、私のオリジナルの提案:

public class ColValueIterator implements Iterator<ColValue> { 
    private List<HColumn<ColName, ColValue>> backingList; 
    //constructor taking List<...> 
    int currentIndex = 0; 
    public ColValue next() { 
     return backingList.get(currentIndex++).getColumn(); 
    } 
    //hasNext() implemented by comparing the currentIndex to backingList.size(); 
    //remove() may throw UnsupportedOperationException(), 
    //or you can remove the current element 
} 
+0

私は単にイテレータラッパーを行うだろうので、私はイテレータになるだろう>コンストラクタで – jordeu

+0

はい、それは良い選択です。私はそれを追加しています。空港で待っている6時間は明らかに私のOOPの考えを損なうものでした:) – Bozho

+0

ありがとうBozho! –

関連する問題