实现这样的迭代器?

时间:2012-03-25 20:40:03

标签: java collections arraylist iterator

我有一个ArrayList类型的列表(HColumn<ColName, ColValue>,infact)。现在我想实现一个迭代此集合的iterator(),以便在迭代时它从每个ColValue中提供相应的HColumn

此对象HColumn<ColName, ColValue>在我的java应用程序使用的外部库中定义。

如果可能,我怎么能这样做?

目前,为了创建这样的迭代,我一直在创建一个包含相应ColValues的新列表,我认为这在性能和性能方面并不好。效率

1 个答案:

答案 0 :(得分: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
}