2012-03-25 96 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