我有一个想要转换为Iterator<TypeA>Iterator<TypeB>。 TypeA和TypeB不能直接相互转换,但是我可以编写一条规则来转换它们。我该怎么做?我应该扩展并覆盖Iterator<TypeA>的next,hasNext和remove方法吗?

最佳答案

您无需自己编写。 Guava (以前是Google馆藏)涵盖了Iterators.transform(...)

您提供了迭代器和一个将TypeA转换为TypeB的函数,就可以完成了。

Iterator<TypeA> iterA = ....;
Iterator<TypeB> iterB = Iterators.transform(iterA, new Function<TypeA, TypeB>() {
   @Override
   public TypeB apply(TypeA input) {
     TypeB output = ...;// rules to create TypeB from TypeA
     return output;
   }
});

10-08 08:14