2013-03-06 63 views
2

是否有一个与构造的现有的集合库(番石榴,公共收集)提供一个MergeIterator的:有没有MergeIterator的实现?

MergeIterator(Iterator<Comparable> iters...) 

,然后(假设迭代器被排序的源)通过并行迭代器前进和返回元件为了?

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

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

回答

0

您可以使用公共的集合的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]