【问题标题】:Is there any implementation of a MergeIterator?是否有 MergeIterator 的任何实现?
【发布时间】:2013-03-06 01:01:29
【问题描述】:

任何现有的集合库(guava、commons-collection)是否提供了一个 MergeIterator,它的构造是:

MergeIterator(Iterator<Comparable> iters...)

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

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

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

【问题讨论】:

    标签: java guava apache-commons-collection


    【解决方案1】:

    Guava 中的Iterators.mergeSorted 就是这样的东西。

    【讨论】:

      【解决方案2】:

      你可以使用 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]
      

      【讨论】:

        猜你喜欢
        • 2010-10-19
        • 1970-01-01
        • 2012-10-30
        • 1970-01-01
        • 1970-01-01
        • 2010-11-07
        • 2011-07-31
        • 2014-01-27
        相关资源
        最近更新 更多