📜  Java中的可迭代接口

📅  最后修改于: 2022-05-13 01:55:44.738000             🧑  作者: Mango

Java中的可迭代接口

Iterable接口是在 JDK 1.5 中引入的。它属于Java.lang包。一般来说,一个实现 Iterable 的对象允许它被迭代。一个可迭代的接口允许一个对象成为增强的 for 循环(for-each loop)的目标。

可迭代的定义

public interface Iterable
{
  Iterator    iterator();
  
  Spliterator spliterator();

  void           forEach(Consumer action);
}

这里, T是迭代器返回的元素类型。

迭代方式

Iterable的对象可以通过三种方式进行迭代。

  1. 使用增强的 for 循环(for-each 循环)
  2. 使用可迭代的 forEach 循环
  3. 使用Iterator接口

使用增强的 for 循环迭代 Iterable

实现 Collection 接口的类的对象可以使用 for-each 循环进行迭代,Collection 接口扩展了 Iterable 接口。

Java
// Java Program to demonstrate iterate 
// an iterable using for-each loop
  
import java.io.*;
import java.util.*;
  
class IterateUsingEnhancedForLoop {
    public static void main (String[] args) {
          
      // create a list
      List list = new ArrayList();
  
      // add elements
      list.add("Geeks");
      list.add("for");
      list.add("Geeks");
  
      // Iterate through the list
      for( String element : list ){
          System.out.println( element );
      }
    }
}


Java
// Java Program to demonstrate iterate
// an Iterable using forEach method
  
import java.io.*;
import java.util.*;
  
class IterateUsingforEach {
    public static void main(String[] args)
    {
          // create a list
        List list = new ArrayList<>();
  
          // add elements to the list
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
  
          // Iterate through the list
        list.forEach(
            (element) -> { System.out.println(element); });
    }
}


Java
// Java Program to demonstrate iterate
// an Iterable using an Iterator
  
import java.io.*;
import java.util.*;
  
class IterateUsingIterator {
    public static void main(String[] args)
    {
        List list = new ArrayList<>();
  
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
  
        Iterator iterator = list.iterator();
  
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
        }
    }
}


输出
Geeks
for
Geeks

使用 forEach 循环迭代一个 Iterable

forEach() 方法将 Lambda 表达式作为参数。为集合的每个元素调用此 Lambda 表达式。在下面的示例中,对于列表中的每个元素,该函数将元素打印到控制台。

Java

// Java Program to demonstrate iterate
// an Iterable using forEach method
  
import java.io.*;
import java.util.*;
  
class IterateUsingforEach {
    public static void main(String[] args)
    {
          // create a list
        List list = new ArrayList<>();
  
          // add elements to the list
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
  
          // Iterate through the list
        list.forEach(
            (element) -> { System.out.println(element); });
    }
}
输出
Geeks
for
Geeks

使用 Iterator 迭代一个 Iterable

我们可以通过使用iterator() 方法从中获取 Iterator 来迭代Java Iterable 的元素。

使用 Iterator 遍历集合执行操作时使用的方法是:

  • hasNext() :如果我们已经到达集合的末尾,则返回 false,否则返回 true。
  • next() :返回集合中的下一个元素。
  • remove() :从集合中移除迭代器返回的最后一个元素。
  • forEachRemaining() :按顺序对集合中的每个剩余元素执行给定的操作。

Java

// Java Program to demonstrate iterate
// an Iterable using an Iterator
  
import java.io.*;
import java.util.*;
  
class IterateUsingIterator {
    public static void main(String[] args)
    {
        List list = new ArrayList<>();
  
        list.add("Geeks");
        list.add("for");
        list.add("Geeks");
  
        Iterator iterator = list.iterator();
  
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
        }
    }
}
输出
Geeks
for
Geeks

可迭代的方法

METHOD

DESCRIPTION

forEach​(Consumer action)Performs the given action for each element of the Iterable until all elements have been processed or the action throws an exception.
iterator()Returns an iterator over elements of type T.
spliterator()Creates a Spliterator over the elements described by this Iterable.

必读

  • 实现迭代器和可迭代接口
  • Java中的迭代器

参考: Java : Java