2013-03-06 2 views
2

ли какой-либо из существующих библиотек сбора (гуава, COMMONS сбор) обеспечивает MergeIterator, который построенные с:Есть ли реализация MergeIterator?

MergeIterator(Iterator<Comparable> iters...) 

, а затем (при условии, источника итераторы сортированные) продвигает через итераторы параллельно, и возвращает элементы в порядке?

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

Это будет классный класс для написания, но я бы не хотел изобретать велосипед.

ответ

0

Вы можете использовать CollatingIterator Общин-коллекций:

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]