我有一个ArrayList
类型的列表(HColumn<ColName, ColValue>
,infact)。现在我想实现一个迭代此集合的iterator()
,以便在迭代时它从每个ColValue
中提供相应的HColumn
。
此对象HColumn<ColName, ColValue>
在我的java应用程序使用的外部库中定义。
如果可能,我怎么能这样做?
目前,为了创建这样的迭代,我一直在创建一个包含相应ColValues
的新列表,我认为这在性能和性能方面并不好。效率
答案 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
}