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() 在开发人员中最为流行。