我有一个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
}