任何现有的集合库(番石榴,commons-collection)是否提供了一个 MergeIterator,它的构造是:
MergeIterator(Iterator<Comparable> iters...)
然后(假设源迭代器已排序)并行通过迭代器并按顺序返回元素?
[1,3,5] + [2,8] => [1,2,3,5,8]
这将是一个有趣的课程,但我不想重新发明轮子。
任何现有的集合库(番石榴,commons-collection)是否提供了一个 MergeIterator,它的构造是:
MergeIterator(Iterator<Comparable> iters...)
然后(假设源迭代器已排序)并行通过迭代器并按顺序返回元素?
[1,3,5] + [2,8] => [1,2,3,5,8]
这将是一个有趣的课程,但我不想重新发明轮子。
Iterators.mergeSorted
在番石榴是这样的事情。
您可以使用 commons-collections 的 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]