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