Java 中的可迭代接口是什么?


简单来说,可迭代接口是一个通用接口,允许我们迭代遍历对象集合。它是在 JDK 1.5 发布时首次引入的,并在 'java.lang' 包中可用。Java 集合框架扩展了此接口,因此集合框架中所有可用的类默认都实现了可迭代接口。换句话说,集合框架的类,如 ArrayList、TreeSet、TreeMap 和 HashMap 都是可迭代的。本文旨在解释 Java 的可迭代接口及其用例。

Java 中的可迭代接口

可迭代接口唯一展示的用例是它允许迭代遍历集合类的元素,以便我们能够访问这些元素。实现可迭代接口的一种方法是覆盖 'iterator()' 方法并提供迭代器接口的具体实现。这里,'iterator()' 方法是可迭代接口的抽象方法。本文后面将讨论其他方法。但在继续之前,让我们先讨论一些重要的语法。

可迭代接口的通用语法

public interface Iterable<TypeOfElement> { }

Iterator() 的通用语法

Iterator<TypeOfCollection> instanceOfIterator = nameOfCollection.iterator();

迭代器接口提供以下方法

  • hasNext() − 如果还有更多元素要迭代,则返回 true。

  • next() − 如果 hasNext() 返回 true,则返回迭代中的下一个元素。

  • remove() − 从集合中删除当前元素。

示例 

以下示例说明了如何使用可迭代接口的 iterator() 方法。

方法

  • 首先,导入 'java.util' 包,以便我们可以访问 ArrayList 类。

  • 然后,创建 ArrayList 类的实例,并使用内置方法 'add()' 将一些元素存储到其中。

  • 接下来,创建一个迭代器。

  • 最后,使用一个 while 循环,借助 'hasNext()' 方法迭代遍历 ArrayList,并使用 'next()' 方法打印元素。

import java.util.*;
public class ArrayObj {
   public static void main(String[] args) {
      // Creating arraylist 
      ArrayList<Integer> araylist = new ArrayList<>();
      // Adding elements in arraylist
      araylist.add(1);
      araylist.add(2);
      araylist.add(1);
      araylist.add(0);
      araylist.add(9);
      araylist.add(6);
      System.out.println("Elements of the list: ");
      // creating an iterator
      Iterator<Integer> iterate = araylist.iterator();
      // while loop to iterate through elements
      while (iterate.hasNext()) { // checking next element
         // printing the current element
         System.out.println(iterate.next()); 
      }
   }
}

输出

Elements of the list: 
1
2
1
0
9
6

迭代遍历可迭代的其他方法如下所示:

  • 使用 for-each 循环

  • 使用 forEach()

让我们逐一讨论它们。

使用 for-each 循环

如果我们使用增强型 for 循环,也称为 for-each 循环,那么我们只能访问指定集合的元素。它不提供删除元素的功能。

示例 

在这个示例中,我们将使用 for-each 循环代替我们在前一个示例中使用的 iterator() 方法。

import java.util.*;
public class ArrayObj {
   public static void main(String[] args) {
      // Creating arraylist 
      ArrayList<Integer> araylist = new ArrayList<>();
      // Adding elements in arraylist
      araylist.add(1);
      araylist.add(2);
      araylist.add(1);
      araylist.add(0);
      araylist.add(9);
      araylist.add(6);
      System.out.println("Elements of the list: ");
      // for-each loop to iterate through elements
      for (Integer print : araylist) {
         // printing the elements
         System.out.println(print);
      }
   }
}

输出

Elements of the list: 
1
2
1
0
9
6

使用 forEach()

它是可迭代接口的默认方法,它使用 lambda 表达式来显示结果。lambda 表达式接受单个输入,执行指定的操作,并且不返回任何内容。它是迭代遍历集合对象的高效方法之一。

示例 

在这个示例中,我们将使用 forEach() 来代替 iterator() 方法和 for-each 循环来获得所需的结果。

import java.util.*;
public class ArrayObj {
   public static void main(String[] args) {
      // Creating arraylist 
      ArrayList<Integer> araylist = new ArrayList<>();
      // Adding elements in arraylist
      araylist.add(1);
      araylist.add(2);
      araylist.add(1);
      araylist.add(0);
      araylist.add(9);
      araylist.add(6);
      System.out.println("Elements of the list: ");
      // forEach to iterate through elements
      araylist.forEach(newArraylist ->
         // printing the elements
         System.out.println(newArraylist));
   }
}

输出

Elements of the list: 
1
2
1
0
9
6

结论

我们从定义可迭代接口开始本文,并在下一节中详细讨论了它。我们已经看到,总共有三种迭代遍历可迭代对象的方法:iterator()、for-each 循环和 forEach()。在这些方法中,iterator() 在开发人员中最为流行。

更新于: 2023-08-17

618 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告