4

我有一个在逻辑上包含多组元素的数组,其中每个组在数组中都是连续的。(它是通过数据库“order by”子句排序的)。将其作为集合的集合(在松散的意义上 - 迭代器的迭代器很好)遍历它是最干净的,其中顶级迭代器将为每个组返回一个较低级别的迭代器。这可能与 Guava 的 partition() 类似,但使用传入的比较器来确定在哪里分解输入。

有很多低效的方法可以做到这一点,例如使用 Guava 的 MultiMap。有没有一种简单、现成、有效的方法来利用订购的优势?

4

1 回答 1

1

编写自己的迭代器。

第一个返回第二个的实例。

他们共享一个索引!

只要索引位于同一组的元素上,第二个就为 hasNext() 返回 true。当 second's.hasNext() 返回 false 时调用 first.hasNext() 然后 first.next() 等等。

它应该是 5 到 10 行手写代码(假设您的 IDE 完成了所有的类、方法和括号内容)。

这是一种高效且不太丑陋的做事方式。如果您想提高效率,只需遍历数组,在 for 循环中检查组条件。那是更少的代码。

于 2012-08-08T19:22:10.310 回答