我是靠谱客的博主 沉默红牛,这篇文章主要介绍如何在Java中将Iterator转换为Iterable?,现在分享给大家,希望可以做个参考。

There are various ways to convert an Iterator into Iterable,

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

  1. Overriding an abstract method iterator()

    覆盖抽象方法iterator()

  2. Lambda expression in Java 8

    Java 8中的Lambda表达式

  3. By using Spliterators

    通过使用分离器

1)覆盖抽象方法iterator() (1) Overriding an abstract method iterator() )

We will see in various steps to override an abstract method iterator(),

我们将在各个步骤中看到重写一个抽象方法iterator()的过程,

  • We will get the Iterator object by using iterator() method of Collection.

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

  • We will get the Iterable object by overriding an iterator() method.

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

  • We will define another method and in this method, we will pass the Iterator object and override iterator() method and then return Iterator object.

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

Example:

例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Java program to demonstrate the example of overriding // an abstract method iterator() to convert Iterator into Iterable import java.util.*; public class ConvertIteratorToIterable { // This is a user defined method to convert Iterator into Iterable public static Iterable convertIterableFromIterator(Iterator iterator) { return new Iterable() { // Overriding an abstract method iterator() public Iterator iterator() { return iterator; } }; } public static void main(String[] args) { // Instantiating Iterator Object Iterator iterate = Arrays.asList(10, 20, 30, 40).iterator(); // Now, we will get the Iterable from Iterator Iterable iterable = convertIterableFromIterator(iterate); // Display converted Iterable elements iterable.forEach(System.out::println); } }

Output

输出量

复制代码
1
2
3
4
5
10 20 30 40

2)Java 8中的Lambda表达式 (2) Lambda expression in Java 8)

We will see in various steps and the steps are given below:

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

  • In the first step, Get the Iterator.

    第一步,获取迭代器。

  • In the second step, we will convert Iterator into Iterable without overriding an abstract method iterator().

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

  • In the third step, we will return Iterable from the method convertIteratorToIterable() and passed the Iterator object and get Iterable.

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

Example:

例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Java program to demonstrate the example of // Lambda expression in Java 8 to convert Iterator into Iterable import java.util.*; public class ConvertIteratorToIterable { // This is a user defined method to convert Iterator into Iterable public static Iterable convertIterableFromIterator(Iterator iterator) { return () -> iterator; } public static void main(String[] args) { // Instantiating Iterator Object Iterator iterate = Arrays.asList(10, 20, 30, 40).iterator(); // Now, we will get the Iterable from Iterator Iterable iterable = convertIterableFromIterator(iterate); // Display converted Iterable elements iterable.forEach(System.out::println); } }

Output

输出量

复制代码
1
2
3
4
5
10 20 30 40

3)通过使用分离器 (3) By using Spliterators)

We will see in few steps and the steps are given below:

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

  • To get the Iterator and convert the Iterator into Spliterator by using Spliterators.spliteratorUnknownSize() method and by using this method we will take iterator object, size, a Boolean value.

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

  • Now, our data is ready in Spliterator and again we will convert Spliterator into Stream by using stream() method.

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

  • Now, our data is ready in Stream and again we will convert Stream to Iterable by using the collect() method.

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

  • At last, we will return the Iterable.

    最后,我们将返回Iterable。

Example:

例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Java program to demonstrate the example of Spliterators to // convert an Iterator into Iterable import java.util.*; import java.util.stream.*; public class ConvertIteratorToIterable { // This is a user defined method to convert Iterator into 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) { // Instantiating Iterator Object Iterator < Double > iterate = Arrays.asList(10.0, 20.0, 30.0, 40.0).iterator(); // Now, we will get the Iterable from Iterator Iterable < Double > iterable = convertIterableFromIterator(iterate); // Display converted Iterable elements iterable.forEach(System.out::println); } }

Output

输出量

复制代码
1
2
3
4
5
10.0 20.0 30.0 40.0

翻译自: https://www.includehelp.com/java/how-to-convert-an-iterator-into-iterable-in-java.aspx

最后

以上就是沉默红牛最近收集整理的关于如何在Java中将Iterator转换为Iterable?的全部内容,更多相关如何在Java中将Iterator转换为Iterable内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部