如何使用Guava将已排序的列表高效地分成多个组?

4
我有一个数组,逻辑上包含多个元素组,其中每个组在数组中是连续的。(通过数据库的“order by”子句进行排序)。最好将其作为集合的集合(宽泛地说-迭代器的迭代器也可以)遍历,其中顶层迭代器将为每个组返回一个较低级别的迭代器。这可能类似于Guava的partition(),但使用传入的比较器来确定如何分割输入。
有很多低效的方法可以做到这一点,例如使用Guava的MultiMap。是否有一种简单、现成、高效的方法可以利用排序?

1个回答

1

编写自己的迭代器。

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

它们共享索引!

只要索引在同一组元素上,第二个将在hasNext()中返回true。当second.hasNext()返回false时,调用first.hasNext(),然后是first.next()等等。

它应该是5-10行手写代码(假设您的IDE处理所有类、方法和括号方面)。

这是一种高效而不太丑陋的做法。如果您想更有效地操作,只需通过for循环遍历数组,在其中检查组条件即可。可能需要更少的代码。


我正在寻找现成的解决方案,而不是自己编写代码。如果我正在寻求编写自己代码的建议,我就不会来这里了;我会直接开始编写代码。这是一个相当普遍的用例,如果Guava中还没有干净利落的方法来实现它,那么它可能适合加入其中。 - Ed Staub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接