📌  相关文章
📜  在Java中将 Iterator 转换为 Iterable(1)

📅  最后修改于: 2023-12-03 15:23:24.313000             🧑  作者: Mango

在Java中将 Iterator 转换为 Iterable

在Java编程中,有时我们需要在集合中循环遍历元素,使用Iterator迭代器可以很好的实现这个功能。但是由于Iterator是一次性的容器,意味着它在第一次迭代后就不再可用,如果需要多次遍历同一集合,就需要把Iterator转换成Iterable对象。本文将会介绍如何在Java中将Iterator转换为Iterable对象。

Iterator 和 Iterable

在介绍Iterator如何转换为Iterable之前,我们需要先了解Iterator和Iterable的区别。简单来说,Iterator是用于遍历集合中元素的接口,而Iterable是代表集合本身,提供一种迭代器来遍历集合中的元素。常用的Iterator实现类有ArrayList、LinkedList、HashSet、TreeSet等,Iterable接口常见的实现类有ArrayList、LinkedList、HashSet、TreeSet等集合类。

示例代码

假设有一个ArrayList集合,我们想对其中的元素进行两次遍历,就需要将集合中的Iterator转换为Iterable对象。下面的示例代码展示了如何将Iterator转换为Iterable。

import java.util.ArrayList;
import java.util.Iterator;

public class IteratorToIterable {
    public static void main(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
      
        // 获取Iterator对象
        Iterator<Integer> iterator = arrayList.iterator();
      
        // 转换Iterator为Iterable对象
        Iterable<Integer> iterable = () -> iterator;
        
        // 第一次遍历
        for(int element : iterable) {
            System.out.println("元素:" + element);
        }
        
        // 第二次遍历
        Iterator<Integer> iterator2 = iterable.iterator();
        while(iterator2.hasNext()) {
            System.out.println("元素:" + iterator2.next());
        }
    }
}

代码解析:

  1. 首先创建一个ArrayList集合对象,并向其中添加了3个整型元素。
  2. 创建ArrayList集合的Iterator对象,用于遍历集合中的元素。
  3. 将Iterator对象转换为Iterable对象,使用Lambda表达式。在Java 8中,Iterable接口添加了一个默认方法spliterator(),用于转换Iterator。
  4. 第一次使用for-each语句遍历Iterable对象中的元素。
  5. 第二次使用while循环遍历Iterable对象中的元素。
总结

这篇文章介绍了如何在Java中将Iterator转换为Iterable对象。可以借助Iterable接口中的默认方法将Iterator转换为可复用的Iterable对象。这样就可以多次遍历同一个Iterable对象中的元素,增强了代码的复用性和灵活性。