如何在Java中将Iterator转换为Iterable?

有多种方法可以将Iterator转换为Iterable,

  1. 重写抽象方法 iterator()

  2. Java 8中的Lambda表达式

  3. 通过使用Spliterators

1)覆盖抽象方法 iterator()

我们将在各个步骤中看到覆盖一个抽象方法iterator()

  • 我们将使用Collection的iterator()方法获取Iterator对象。

  • 我们将通过重写iterator()方法来获取Iterable对象。

  • 我们将定义另一个方法,在此方法中,我们将传递Iterator对象并重写iterator()方法,然后返回Iterator对象。

示例

//演示Java程序重写的示例 

//iterator()将Iterator转换为Iterable的抽象方法

import java.util.*;

public class ConvertIteratorToIterable {

    //这是用户定义的方法,用于将Iterator转换为Iterable-

    public static Iterable convertIterableFromIterator(Iterator iterator) {

        return new Iterable() {

            //覆盖抽象方法iterator()

            public Iterator iterator() {

                return iterator;

            }

        };

    }

    public static void main(String[] args) {

        //实例化Iterator对象

        Iterator iterate = Arrays.asList(10, 20, 30, 40).iterator();

        //现在,我们将从Iterator中获得Iterable-

        Iterable iterable = convertIterableFromIterator(iterate);

        //显示转换后的Iterable元素

        iterable.forEach(System.out::println);

    }

}

输出结果

10

20

30

40

2)Java 8中的Lambda表达式

我们将在各个步骤中看到以下步骤:

  • 第一步,获取迭代器。

  • 在第二步中,我们将把Iterator转换为Iterable而不覆盖抽象方法iterator()。

  • 第三步,我们将从convertIteratorToIterable()方法返回Iterable,并传递Iterator对象并获得Iterable。

示例

//Java程序演示的例子  

//Java 8中的Lambda表达式可将Iterator转换为Iterable-

import java.util.*;

public class ConvertIteratorToIterable {

    //这是用户定义的方法,用于将Iterator转换为Iterable-

    public static Iterable convertIterableFromIterator(Iterator iterator) {

        return () -> iterator;

    }

    public static void main(String[] args) {

        //实例化Iterator对象

        Iterator iterate = Arrays.asList(10, 20, 30, 40).iterator();

        //现在,我们将从Iterator中获得Iterable-

        Iterable iterable = convertIterableFromIterator(iterate);

        //显示转换后的Iterable元素

        iterable.forEach(System.out::println);

    }

}

输出结果

10

20

30

40

3)通过使用Spliterators

我们将在几个步骤中看到以下步骤:

  • 要获取Iterator并通过使用Spliterators.spliteratorUnknownSize()方法将Iterator转换为Spliterator,并使用此方法,我们将使用iterator对象,大小和布尔值。

  • 现在,我们的数据已在Spliterator中准备好了,再次使用stream()方法将Spliterator转换为Stream 。

  • 现在,我们的数据已经在Stream中准备好了,再次,我们将使用collect()方法将Stream转换为Iterable 。

  • 最后,我们将返回Iterable。

示例

//Java程序演示的例子 Spliterators to 

//将Iterator转换为Iterable-

import java.util.*;

import java.util.stream.*;

public class ConvertIteratorToIterable {

    //这是用户定义的方法,用于将Iterator转换为Iterable-

    public static < T > Iterable < T > convertIterableFromIterator(Iterator < T > iterator) {

        return StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, 0), false).collect(Collectors.toList());

    }

    public static void main(String[] args) {

        //实例化Iterator对象

        Iterator < Double > iterate = Arrays.asList(10.0, 20.0, 30.0, 40.0).iterator();

        //现在,我们将从Iterator中获得Iterable-

        Iterable < Double > iterable = convertIterableFromIterator(iterate);

        //显示转换后的Iterable元素

        iterable.forEach(System.out::println);

    }

}

输出结果

10.0

20.0

30.0

40.0

以上是 如何在Java中将Iterator转换为Iterable? 的全部内容, 来源链接: utcz.com/z/316013.html

回到顶部