Java中的可迭代接口
Iterable接口是在 JDK 1.5 中引入的。它属于Java.lang包。一般来说,一个实现 Iterable 的对象允许它被迭代。一个可迭代的接口允许一个对象成为增强的 for 循环(for-each loop)的目标。
可迭代的定义
public interface Iterable
{
Iterator iterator();
Spliterator spliterator();
void forEach(Consumer super T> action);
}
这里, T是迭代器返回的元素类型。
迭代方式
Iterable的对象可以通过三种方式进行迭代。
- 使用增强的 for 循环(for-each 循环)
- 使用可迭代的 forEach 循环
- 使用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 super T> 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