`
kanpiaoxue
  • 浏览: 1779110 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java Convert an Iterator to Iterable in Java

 
阅读更多

 

参考资料: https://www.techiedelight.com/convert-iterator-iterable-java/

1. Java 7 and before

import java.util.Arrays;
import java.util.Iterator;

// Program to Convert an Iterator to Iterable in Java
class IteratorUtils
{
	public static<T> Iterable<T> iteratorToIterable(Iterator<T> iterator) {
		return new Iterable<T>() {
			@Override
			public Iterator<T> iterator() {
				return iterator;
			}
		};
	}

	public static void main(String[] args)
	{
		Iterator<Integer> iterator = Arrays.asList(1, 2, 3, 4, 5).iterator();

		Iterable<Integer> iterable = iteratorToIterable(iterator);
		iterable.forEach(System.out::println);
	}
}

 

 

2. Java 8 and above

import java.util.Arrays;
import java.util.Iterator;

// Program to Convert an Iterator to Iterable in Java 8 and above
class IteratorUtils
{
	public static<T> Iterable<T> iteratorToIterable(Iterator<T> iterator) {
		return () -> iterator;
	}

	public static void main(String[] args)
	{
		Iterator<Integer> iterator = Arrays.asList(1, 2, 3, 4, 5).iterator();

		Iterable<Integer> iterable = iteratorToIterable(iterator);
		iterable.forEach(System.out::println);
	}
}

 

3. Converting Iterator to Spliterators

import java.util.Arrays;
import java.util.Iterator;
import java.util.Spliterators;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

// Program to Convert an Iterator to Iterable in Java
class IteratorUtils
{
	private static <T> Iterable<T> iteratorToIterable(Iterator<T> iterator)
	{
		// 1. Convert the iterator into a Spliterator
		// 2. Convert the spliterator into a sequential stream
		// 3. Convert the stream to an iterable
		return StreamSupport
					.stream(Spliterators.spliteratorUnknownSize(iterator, 0),
							false)
					.collect(Collectors.toList());
	}

	public static void main(String[] args)
	{
		Iterator<Integer> iterator = Arrays.asList(1, 2, 3, 4, 5).iterator();

		Iterable<Integer> iterable = iteratorToIterable(iterator);
		iterable.forEach(System.out::println);
	}
}

 

 

 

 

分享到:
评论

相关推荐

    java 中 Iterator 与Iterable的作用

    java 中 Iterator 与Iterable的作用;java语言需要更多基础沉淀,扎扎实实,后面的各种项目都会如何天翼。进行更高阶的用法和一些框架的原理都离开最基础的东西,基础虽然枯燥,但是也很有乐趣。

    java集合_浅谈Iterable和Iterator的区别

    在Java编程语言中,集合框架是处理对象数组的关键部分,而`Iterable`和`Iterator`则是这个框架中的两个核心概念,它们提供了遍历集合元素的能力。这篇文章将深入探讨`Iterable`和`Iterator`的区别,以及它们在实际...

    JAVA中的Iterator的用法

    ### JAVA中的Iterator的用法详解 #### 一、概述 在Java编程语言中,`Iterator`接口扮演着遍历集合的重要角色。它提供了一种方式,使得开发人员能够以一致的方式遍历各种类型的集合,无需了解集合的具体实现细节。...

    java-util-iterator.pdf java-util-iterator.pdf

    根据提供的文件信息,本文将深入探讨Java中的`java.util.Iterator`接口及其在集合类中的应用。我们将从以下几个方面进行详细解析: ### 一、集合类的根接口:Collection `Collection`接口是Java集合框架的基础,它...

    Java源码分析:深入探讨Iterator模式

    在Java中,集合框架通过实现`Iterable`接口并提供一个`iterator()`方法来支持迭代器模式。下面我们将深入探讨`java.util.AbstractList`类中如何实现迭代器模式。 #### 四、`java.util.AbstractList`中的迭代器实现 ...

    Java学习之Iterator(迭代器)的一般用法

    在Java中,任何实现了Iterable接口的集合都可以通过调用`iterator()`方法来获取一个Iterator实例。例如,对于一个`ArrayList`列表`list`,你可以这样获取其迭代器: ```java Iterator&lt;String&gt; iterator = list....

    Java源码分析Iterable.pdf

    Iterable接口的定义位于java.lang.Iterable接口中,它只有一个方法,即iterator(),该方法返回一个Iterator对象,该对象用于迭代对象的元素。Iterable接口的定义如下所示: ```java public interface Iterable&lt;T&gt; {...

    对Python中Iterator和Iterable的区别详解

    例如,创建一个简单的迭代器,使用生成器表达式(x for x in range(10)),并用isinstance((x for x in range(10)), Iterator)检查,会得到True。 在Python中,for循环是一个常用的语法结构,用于遍历可迭代对象中的...

    详解Java中Iterable与Iterator用法

    "Java中Iterable与Iterator用法详解" Java中Iterable与Iterator是两个非常重要的概念,它们都是Java集合框架中最基本的组件,用于遍历和迭代集合中的元素。Iterable是Java中的一个接口,表示可以被迭代的对象,而...

    模拟java ArrayList Iterator

    这个资源的目的是通过模拟Java ArrayList的Iterator实现,帮助理解Iterator设计模式。 首先,我们来详细解释一下ArrayList和Iterator的概念。ArrayList是一个可变大小的数组,它允许我们在任何位置插入和删除元素。...

    一个使用iterator和json技术的实例

    在Java编程语言中,`Iterator`接口和`Iterable`接口是处理集合数据的重要工具,而JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于数据传输和存储。这个"iterator_jsonDemo"实例结合了这...

    Java设计模式之Iterator模式

    本文以java中的容器为例,模拟Iterator的原理。 参考:马士兵 Java设计模式 Iterator 1.首先定义一个容器Collection接口. 2.定义一个Iterator迭代器的接口 3.定义一个ArrayList,实现Collection接口,并写一个实现了...

    Java Iterator接口实现代码解析

    Java Iterator接口实现代码解析 Java Iterator接口是Java集合框架中的一部分,它提供了对集合元素的遍历和操作功能。Iterator接口的主要方法包括hasNext()、next()和remove(),它们分别用于判断是否还有更多元素、...

    Java Collection集合iterator方法解析

    Java Collection 集合 iterator 方法解析 Java Collection 集合 iterator 方法是一种非常重要的方法,通过该方法我们可以对集合进行遍历和操作。下面我们将详细介绍 Java Collection 集合 iterator 方法的实现原理...

    一个Iterator的实例1---马克-to-win java视频

    一个Iterator的实例1---马克-to-win java视频迭代器的详细描述

    Java集合使用 Iterator 删除元素

    Java集合使用Iterator删除元素 Java集合使用Iterator删除元素是Java编程中的一种常见操作。Iterator是Java集合框架中的一种接口,用于遍历集合中的元素。在使用Iterator遍历集合时,如果需要删除某些元素,就需要...

    java Iterator迭代器的使用

    Java中的`Iterator`接口是Java集合框架的重要组成部分,它提供了遍历集合元素的机制。`Iterator`被设计用来遍历各种类型的集合,如ArrayList、LinkedList、Set等。在这个主题中,我们将深入理解`Iterator`的工作原理...

    自己实现java中Iterator(迭代器功能).docx

    ### 自己实现Java中的Iterator(迭代器功能) #### 背景与动机 在Java编程过程中,迭代器(`Iterator`)是一种常见的用于遍历集合元素的机制。它提供了访问集合元素的方式,而不暴露底层数据结构。对于学习或进阶...

    Iterable和Iterator的关系

    在Java编程语言中,`Iterable`和`Iterator`是两个非常重要的接口,它们在处理集合数据时起到核心作用。理解这两个接口的关系对于高效地操作Java集合框架至关重要。 首先,我们来了解一下`Iterable`接口。`Iterable`...

Global site tag (gtag.js) - Google Analytics