我有一个ArrayList类型的列表(实际上是HColumn<ColName, ColValue>)。现在,我想实现一个遍历此集合的iterator(),以便在迭代时它从每个ColValue中给出相应的HColumn

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

如果可能,我该怎么办?

当前,要创建这样的可迭代对象,我一直在创建一个新列表,其中包含相应的ColValues,对于性能和效率而言,我认为这不是好东西。

最佳答案

如@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
}

08-16 12:12