有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

迭代器中的整数序列(Java)

我是编程初学者,我有Iterator<Iterator<Integer>> itit中的每个迭代器都是一个数字序列。比如:

Iterator1 - (1, 2, 3)
Iterator2 - (4, 5, 6)
Iterator3 - (7, 8, 9)

从另一个角度来看,it是:

Iterator<Iterator<Integer> ((1, 2, 3), (4, 5, 6), (7, 8, 9))

我需要一个方法,它将return{},比如:

 Iterator<Integer> convert(Iterator<Iterator<Integer>> it) {
        // How to do it?
 }

it中每个迭代器的数字序列的大小和值可能不同

我知道我必须自己去做,但我甚至不知道这里会发生什么


共 (1) 个答案

  1. # 1 楼答案

    如果您不想“预先遍历”迭代器,例如,通过在列表中收集迭代器,然后将迭代器返回到该列表,您可以从Iterator创建Spliterator,使用StreamSupport将其转换为Stream,并使用flatMap对内部迭代器执行相同的操作,然后为该平坦流获取迭代器

    public static <E> Iterator<E> convert(Iterator<Iterator<E>> iterators) {
        return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterators, 0), false)
                .flatMap(it -> StreamSupport.stream(Spliterators.spliteratorUnknownSize(it, 0), false))
                .iterator();
    }