我正在为不同的团队提供图书馆。我提供的方法之一作为参数接收迭代器。我想以某种方式需要一定的迭代次序。有没有办法通过扩展Iterator在代码中执行此操作?
答案 0 :(得分:1)
不直接。迭代器只是为了给你一个项目,避免存储在内存中并传递一整个值列表,这有时是不可行的。
除非您对如何生成值以及必须将哪些边界应用于数据排序有更多的了解,否则唯一的方法是从迭代器中获取所有元素,将它们存储在某些列表/向量/数据库中,排序它们并使用排序列表返回另一个迭代器。
答案 1 :(得分:0)
作为一个参数,你被传递给一个实现Iterator的具体类的实例。你不能扩展它的类,因为它的类是由实例化决定的,这是由调用你的方法的代码完成的。
如果您想在未遵守所需订单时快速失败,请尝试Guava's Ordering.isOrdered() method.
注意:这只有在您的参数是Iterable而不是Iterator时才有效。你需要它是Iterable(一个允许你检索Iterator的接口),这样你就可以迭代两次:一次检查顺序,一次处理。