2012-03-25 94 views
0

我有一個列表(ArrayList,事實上)HColumn<ColName, ColValue>類型。現在我想實現一個循環遍歷這個集合的iterator(),這樣在迭代時它會從每個HColumn中發出相應的ColValue實現這樣一個迭代器?

此對象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 2012-03-25 20:50:38

+0

是的,這是一個更好的選擇。我正在添加它。在機場等了6個小時,顯然使我的面向對象的思維陷入了癱瘓:) – Bozho 2012-03-25 20:53:44

+0

非常感謝你Bozho! – 2012-03-25 21:57:43