这是我在这里的第一个活动,我希望我的行为正确!我的问题:我试图写一个函数集合(一类的静态方法)接受一个或多个Iterable<Integer>并获得primitiveIterator.ofInt,它提供了对构造另一个迭代器(另一种功能,即功能是为了撰写迭代器以各种方式).
这是我想到的一个简单例子:
public static FilterIteratorInt filtor(Iterable<Integer> iter, IntPredicate filter)
{
return new FilterIteratorInt((PrimitiveIterator.OfInt)iter.iterator(),filter);
}
Run Code Online (Sandbox Code Playgroud)
对我而言,目前尚不清楚这是否可行,因为Object iterator返回的内容Iterable<Integer>可能不是类型PrimitiveIterator.OfInt.
为了克服这个潜在的困难,我一直在寻找一个解决方案,它可能是一个接口,例如PrimitiveIterable.OfInt或任何其他方式来确定迭代器是否实际上是原始的.我已经搜索了很长一段时间,但通常只是浏览几乎所有问题的答案,这次我不得不在这里注册直接问这个问题.
这种结构旨在避免装箱/拆箱狂欢,因为我希望新的迭代器速度相当快.
所以这里有三个问题:
更新:由于霍尔格斯回答,它归结为以下问题nr.4:如果next()在a上PrimitiveInteger.OfInt调用,则会调用该nextInt()方法,换句话说:这会自动返回纯粹的int吗?或者它仍然会导致拳击和拆箱序列?
从下面的答案我假设后者,这意味着明确地处理它肯定更好nextInt().
假设这是正确的(请告诉我,如果我错了),我使用了instanceof下面的方法并在需要时明确换行.