是否有MergeIterator的实现?

时间:2013-03-06 01:01:29

标签: java guava apache-commons-collection

任何现有的集合库(guava,commons-collection)是否提供了使用以下构造的MergeIterator:

MergeIterator(Iterator<Comparable> iters...)

然后(假设源迭代器已排序)并行通过迭代器并按顺序返回元素?

[1,3,5] + [2,8] => [1,2,3,5,8]

这将是一个有趣的课程,但我不想重新发明轮子。

2 个答案:

答案 0 :(得分:4)

番石榴中的

Iterators.mergeSorted就是这样。

答案 1 :(得分:0)

您可以使用commons-collections的Collat​​ingIterator:

 List<Integer> list1 = Arrays.asList(1, 3, 5);
 List<Integer> list2 = Arrays.asList(2, 8);

 Iterator<Integer> merged =
    IteratorUtils.collatedIterator(ComparatorUtils.NATURAL_COMPARATOR,
                                   list1.iterator(), list2.iterator());

 System.out.println(IteratorUtils.toList(merged));

这将打印以下内容:

 [1, 2, 3, 5, 8]