java.util.iterable_如何在Java中将Iterator转换为Iterable?

本文详细介绍了如何在Java中将Iterator转换为Iterable。方法包括:1) 重写iterator()方法;2) 使用Java 8的Lambda表达式;3) 通过Spliterators和Stream转换。示例代码展示了每种方法的具体实现,便于理解和应用。
摘要由CSDN通过智能技术生成

有多种方法可以将Iterator转换为Iterable,重写抽象方法 iterator()

Java 8中的Lambda表达式

通过使用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  Iterable  convertIterableFromIterator(Iterator  iterator) {

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

}

public static void main(String[] args) {

//实例化Iterator对象

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

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

Iterable  iterable = convertIterableFromIterator(iterate);

//显示转换后的Iterable元素

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

}

}

输出结果10.0

20.0

30.0

40.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值