有多种方法可以将Iterator转换为Iterable,
重写抽象方法 iterator()
Java 8中的Lambda表达式
通过使用Spliterators
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
我们将在各个步骤中看到以下步骤:
第一步,获取迭代器。
在第二步中,我们将把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
我们将在几个步骤中看到以下步骤:
要获取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